SQL日期间隔函数

  • MySQL 为日期增加一个时间间隔:date_add()
now()       //now函数为获取当前时间
date_add(string startdate, intdays) 
说明: 返回开始日期startdate增加days天后的日期。 
hive>select date_add('2016-12-29',10);
2017-01-08
查询X天后:CONCAT_WS( ' - ',年,月,日)= DATE_ADD(CURRENT_DATE,X)
select date_add(now(), interval 1 day); - 加1天
select date_add(now(), interval 1 hour); -加1小时
select date_add(now(), interval 1 minute); - 加1分钟
select date_add(now(), interval 1 second); -加1秒
select date_add(now(), interval 1 microsecond);-加1毫秒
select date_add(now(), interval 1 week);-加1周
select date_add(now(), interval 1 month);-加1月
select date_add(now(), interval 1 quarter);-加1季
select date_add(now(), interval 1 year);-加1年
查询昨天:CONCAT_WS( ' - ',年,月,日)= DATE_SUB(CURRENT_DATE,1)
MySQL adddate(), addtime()函数,可以用date_add() 来替代。
  • MySQL 为日期减去一个时间间隔:date_sub()
date_sub (string startdate,int days) 
说明: 返回开始日期startdate减少days天后的日期。 
hive>select date_sub('2016-12-29',10);
    2016-12-19
MySQL date_sub() 日期时间函数 和date_add() 用法一致。
MySQL 中subdate(),subtime()函数,建议,用date_sub()来替代。
查询昨天:CONCAT_WS( ' - ',年,月,日)= DATE_SUB(CURRENT_DATE,1)
查询X天前:CONCAT_WS( ' - ',年,月,日)= DATE_SUB(CURRENT_DATE,X
  • 日期比较函数: datediff
datediff(string enddate,string startdate) 
说明: 返回结束日期减去开始日期的天数。 
hive> select datediff('2016-12-30','2016-12-29');
  • 查询近30天的数据
select * from table where  datediff(current_timestamp,create_time)<=30;
create_time 为table里的字段,current_timestamp 返回当前时间 2018-06-01 11:00:00
  • 案例分享
where concat_ws('-', YEAR, MONTH, DAY) BETWEEN date_sub('2019-06-26', 29) AND '2019-06-26'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。