1. current_date:获取当前日期
select current_date()
输出:2021-01-13
2. current_timestamp:获取当前时间,精确到秒
select current_timestamp()
输出:2021-01-13 14:22:04.018+08:00
3. to_date:日期转换为日期函数
select to_date(‘2021-01-11 13:34:12’)
输出:2021-01-11
4. from_unixtime:转化unix时间戳到当前时区的时间格式,时间戳是秒的格式,毫秒的话需要/1000
select from_unixtime(1610294400, ‘yyyyMMdd’)
输出:20210111
select from_unixtime(1610298072000 / 1000, ‘yyyy-MM-dd’)
输出:2020-01-11
5. unix_timestamp:获取当前unix时间戳
select unix_timestamp()
输出:1610444126
select unix_timestamp(‘2021-01-10 13:51:20’)
输出:1610257880
select unix_timestamp(‘2021-01-10’, ‘yyyy-mm-dd’)
输出:1610208060
6. 获取当前年/月/日/小时/分钟/秒
select year(‘2021-01-10’)
select month(‘2021-01-10’)
select day(‘2021-01-10’)
select hour(‘2021-01-10 12:14:56’)
select minute(‘2021-01-10 12:14:56’)
select second(‘2021-01-10 12:14:56’)
7. 日期加减
datediff:返回开始日期减去结束日期的天数,格式只能是yyyy-mm-dd
select datediff(‘2021-01-10’, ‘2020-12-31’)
输出:10
date_sub:返回日期前n天的日期,格式只能是yyyy-mm-dd
select date_sub(‘2021-01-10’,5)
输出:2021-01-05
date_add:返回日期后n天的日期,格式只能是yyyy-mm-dd
select date_add(‘2021-01-10’,1)
输出:2021-01-11
8. yyyymmdd和yyyy-mm-dd互相转换
select from_unixtime(unix_timestamp(‘2021-01-11’, ‘yyyy-mm-dd’),’yyyymmdd’)
select from_unixtime(unix_timestamp(‘20210111’,’yyyymmdd’),’yyyy-mm-dd’)
9. 时间差
两个日期相差多少小时
select (unix_timestamp(‘2021-01-11 12:03:55’) - unix_timestamp(‘2021-01-11 11:03:55’)) / 3600
输出:1
两个日期相差多少分钟
select (unix_timestamp(‘2021-01-11 12:03:55’) - unix_timestamp(‘2021-01-11 11:03:55’)) / 60
输出:60
10. 返回上个月第一天和最后一天
这个月第一天
select trunc(CURRENT_TIMESTAMP,’mm’)
上个月第一天
select >trunc(add_months(CURRENT_TIMESTAMP,-1),’mm’)
select trunc(current_date, ‘mm’)
上个月最后一天
select date_sub(trunc(CURRENT_TIMESTAMP,’mm’),1);
11. 字符串转换为日期
select to_date(from_unixtime(unix_timestamp(‘11.11.2021’, ‘mm.dd.yyyy’)))