1. 计算
- 2个日期小时差
(unix_timestamp(qingjie_reg_time)-unix_timestamp(real_send_time))/3600
- 计算开始时间startdate到结束时间enddate相差的天数
datediff(string enddate, string startdate)
- 从开始时间startdate加上days
date_add(string startdate, int days)
- 从开始时间startdate减去days
date_sub(string startdate, int days)
- 返回当前时间下再增加num_months个月的日期
add_months(string start_date, int num_months)
- 返回这个月的最后一天的日期,忽略时分秒部分(HH:mm:ss)
last_day(string date)
- 本月1日
写法1: get_date(-day(get_date(-1)))
写法2: concat(substr(get_date(-1), 1, 8),'01')
上月最后一天
get_date(-day(get_date(-1))-1)
- 上月1日
concat(substr(get_date(-day(get_date(-1))-1), 1, 8),'01')
- 返回当前时间的下一个星期X所对应的日期
如:next_day(‘2015-01-14’, ‘TU’) = 2015-01-20 以2015-01-14为开始时间,其下一个星期二所对应的日期为2015-01-20
next_day(string start_date, string day_of_week)
- 返回时间的最开始年份或月份
如trunc(“2016-06-26”,“MM”)=2016-06-01 trunc(“2016-06-26”,“YY”)=2016-01-01
注意所支持的格式为MONTH/MON/MM, YEAR/YYYY/YY trunc(string date, string format)
select concat(substr(‘2018-08-31’, 1, 7), ‘-01’)
- 返回date1与date2之间相差的月份,
如date1>date2,则返回正,如果date1<date2,则返回负,否则返回0.0
如:months_between(‘1997-02-28 10:30:00’, ‘1996-10-30’) = 3.94959677 1997-02-28 10:30:00与1996-10-30相差3.94959677个月
months_between(date1, date2)
- 某日期所在的周一和周日日期
select date_sub(‘2017-08-06’,IF(pmod(datediff(‘2017-08-06’, ‘1920-01-01′) – 3, 7)=’0’, 7, pmod(datediff(‘2017-08-06’, ‘1920-01-01’) – 3, 7))-7)
2. 格式
- 按指定格式返回时间date
如:date_format(“2016-06-22″,”MM-dd”)=06-22
date_format(date/timestamp/string ts, string fmt)
- 将时间的秒值转换成format格式
(format可为“yyyy-MM-dd hh:mm:ss”,“yyyy-MM-dd hh”,“yyyy-MM-dd hh:mm”等等)
如from_unixtime(1250111000,”yyyy-MM-dd”) 得到2009-03-12
from_unixtime(bigint unixtime[, string format])
- 将格式为yyyy-MM-dd HH:mm:ss的时间字符串转换成时间戳
如unix_timestamp(‘2009-03-20 11:30:01’) = 1237573801
unix_timestamp(string date)
- 将指定时间字符串格式字符串转换成Unix时间戳,如果格式不对返回0
如:unix_timestamp(‘2009-03-20’, ‘yyyy-MM-dd’) = 1237532400
unix_timestamp(string date, string pattern)
- 返回时间字符串的日期部分
to_date(string timestamp)
- 返回时间字符串的年份部分
year(string date)
- 返回当前时间属性哪个季度
如quarter(‘2015-04-08’) = 2 quarter(date/timestamp/string)
- 返回时间字符串的月份部分
month(string date)
- 返回时间字符串的天
day(string date) dayofmonth(date)
- 返回时间字符串的小时
hour(string date)
- 返回时间字符串的分钟
minute(string date)
- 返回时间字符串的秒
second(string date)
- 返回时间字符串位于一年中的第几个周内
weekofyear(string date)
- 如果给定的时间戳并非UTC,则将其转化成指定的时区下时间戳
from_utc_timestamp(timestamp, string timezone)
- 如果给定的时间戳指定的时区下时间戳,则将其转化成UTC下的时间戳
to_utc_timestamp(timestamp, string timezone)
3. 当前日期
- 获取本地时区下的时间戳
unix_timestamp()
- 返回当前时间日期
current_date
- 返回当前时间戳
current_timestamp