先来看看mysql中日期的加减:
MySQL 为日期增加一个时间间隔:date_add()
now() //now函数为获取当前时间
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年
MySQL adddate(), addtime()函数,可以用date_add() 来替代。
2. MySQL 为日期减去一个时间间隔:date_sub()
MySQL date_sub() 日期时间函数 和date_add() 用法一致。
MySQL 中subdate(),subtime()函数,建议,用date_sub()来替代。
在Hive中,日期加减和mysql稍有区别,个人认为hive中的更简洁一点:
日期增加函数: date_add(string startdate, int days)
函数 | 格式 | 返回值 | 说明 |
---|---|---|---|
date_add | date_add(string startdate, int days) | string | 返回开始日期startdate增加days天后的日期 |
hive (temp)> select date_add('2016-12-08',10) from dual; 2016-12-18 #当前日期为2016-08-25,在此基础上加7天 hive (temp)> select date_add(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),7) from dual; 2016-09-01
日期减少函数:date_sub (string startdate, int days)
函数 | 格式 | 返回值 | 说明 |
---|---|---|---|
date_sub | date_sub(string startdate, int days) | string | 返回开始日期startdate减少days天后的日期 |
hive (temp)> select date_sub('2016-12-08',10) from dual; 2016-11-28 #当前日期为2016-08-25,在此基础上减7天 hive (temp)> select date_sub(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),7) from dual; 2016-08-18