SQl用法积累

1.获取当前系统时间

MySql中

NOW(),SYSDATE(),CURRENT_TIMESTAMP();--日期+时间
CURDATE(),CURRENT_DATE();--只有日期部分,不含时间
CURTIME(),CURRENT_TIME();--只有时间部分

Oracle中

SELECT SYSTIMESTAMP FROM DUAL;
SELECT SYSDATE FROM DUAL;
SELECT TO_CHAR(SYSDATE, 'YYYY-MM-DD') FROM DUAL;--日期部分
SELECT TO_CHAR(SYSDATE, 'HH24:MI:SS') FROM DUAL;--时间部分

SqlServer中

参考:https://www.cnblogs.com/spring_wang/p/4748124.html

select getdate();--当前系统日期、时间
select dateadd(day,2,'2019-10-15');   --返回:2019-10-17 00:00:00.000
select datediff(day,'2019-09-01','2019-09-18');    --返回:17
select datename(weekday, '2004-10-15');   --返回:星期五
select 当前日期=convert(varchar(10),getdate(),120),当前时间=convert(varchar(8),getdate(),114);  
select datename(dw,'2004-10-15');
select 本年第多少周=datename(week,'2004-10-15'), 今天是周几=datename(weekday,'2004-10-15'); 

2.比较时间大小

比较字符串类型的时间大小

数据库中的时间是varchar类型的,MySql使用CURDATE()来获取当前日期,SqlServer通过GETDATE()来获取当前日期

1.直接使用字符串来比较

注意:要保证两个数据的类型完全相同,否则异常

比如A:“2016-09-01”,如果B数据是:“2016-9-2”,那么无法进行比较

2.通过类型转换函数convert()

注意:要保证字符串的时间值正确,否则异常,

比如“2016-2-30”,2月没有30号,所以在转换的时候就会异常

CONVERT (<data_ type>[ length ], <expression> [, style])

1)data_type为SQL Server系统定义的数据类型,用户自定义的数据类型不能在此使用。
2)length用于指定数据的长度,缺省值为30。
3)用CONVERT() 函数的style 选项能以不同的格式显示日期和时间。style 是将DATATIME 和SMALLDATETIME 数据转换为字符串时

所选用的由SQL Server 系统提供的转换样式编号,不同的样式编号有不同的输出格式。如果用这种方法来判断某一个字段的话,

则存入的日期字段的字符串格式只要是能让sql server完成对日期的转换就可以了,而不一定要像第一种方法中的那样严格。

还是说adddate字段,比如要比较它是否大于当前的日期,就可以这样写:

where (convert(varchar, adddate) >= convert(varchar, getdate()))
select convert(varchar(10),getdate(),120);  --获取当前日期  
select convert(date,getdate(),110);--获取当前日期  
select convert(datetime,getdate(),110); --获取当前时间日期  
select convert(varchar(50),getdate(),108);  --获取当前时刻 

我的应用场景:

select * from table where (select curdate())< updateDate and updateDate is not null;

3.Sql 查询当天、本周、本月记录

查询当天:

select * from info where DateDiff(dd,datetime,getdate())=0; 

查询24小时内的:

select * from info where DateDiff(hh,datetime,getDate())<=24;

查询本月:

select * from info where DateDiff(month,datetime,getdate())=0 

查询本周:

select * from info where DateDiff(week,datetime,getDate())=0;

查询本年:

select * from info where DateDiff(year,datetime,getDate())=0;

4.批量InsertOrUpdate(mybatis中写法)

MySql

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.aas.qd.qmap.business.dao.NowUserMapper">
    <insert id="insertOrUpdate" parameterType="com.aas.qd.qmap.business.model.TiNowAuthor">
        INSERT INTO ti_now_author
        (user_id, user_nickname, user_name, gender, register_time, user_province_id, user_province, user_city_id,
        user_city,
        is_fellow, is_employee, attention_number, fans_number, identity, vin, fellow_name, fellow_mobile, is_eff,
        first_load_dt, last_updt_dt, load_job, load_from, remark, batch_id)
        values
        <foreach collection="list" item="info" separator=",">
            (#{info.user_id},#{info.user_nickname,jdbcType=VARCHAR},#{info.user_name,jdbcType=VARCHAR},#{info.gender,jdbcType=VARCHAR}
            ,#{info.register_time,jdbcType=TIMESTAMP},#{info.user_province_id,jdbcType=INTEGER},#{info.user_province,jdbcType=VARCHAR}
            ,#{info.user_city_id,jdbcType=INTEGER},#{info.user_city,jdbcType=VARCHAR},#{info.is_fellow,jdbcType=TINYINT}
            ,#{info.is_employee,jdbcType=TINYINT},#{info.attention_number,jdbcType=INTEGER},#{info.fans_number,jdbcType=INTEGER}
            ,#{info.identity,jdbcType=VARCHAR},#{info.vin,jdbcType=VARCHAR},#{info.fellow_name,jdbcType=VARCHAR},#{info.fellow_mobile,jdbcType=VARCHAR}
            ,#{info.is_eff,jdbcType=TINYINT},current_timestamp,current_timestamp
            ,#{info.load_job,jdbcType=VARCHAR},#{info.load_from,jdbcType=VARCHAR},#{info.remark,jdbcType=VARCHAR},#{info.batch_id})
        </foreach>
        ON DUPLICATE KEY UPDATE
        user_nickname=VALUES(user_nickname),user_name=VALUES(user_name), gender=VALUES(gender),
        register_time=VALUES(register_time), user_province_id=VALUES(user_province_id),
        user_province=VALUES(user_province),
        user_city_id=VALUES(user_city_id), user_city=VALUES(user_city), is_fellow=VALUES(is_fellow),
        is_employee=VALUES(is_employee), attention_number=VALUES(attention_number), fans_number=VALUES(fans_number),
        identity=VALUES(identity), vin=VALUES(vin), fellow_name=VALUES(fellow_name),
        fellow_mobile=VALUES(fellow_mobile),
        is_eff=VALUES(is_eff), last_updt_dt=current_timestamp,
        load_job=VALUES(load_job), load_from=VALUES(load_from), remark=VALUES(remark), batch_id=VALUES(batch_id)
    </insert>
</mapper>


SqlServer

--待补充

5.修改表名

MySql

RENAME TABLE TT_DOWNSTREAM_API TO TT_APP_INFO;

SqlServer

EXEC sp_rename 'TT_DOWNSTREAM_API', 'TT_APP_INFO';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值