8. 返回日期中的年/季度/月/日
select year('2021-08-14 10:05:20');
输出:2021
select quarter('2021-08-14 10:05:20');
输出:3
select month('2021-08-14 10:05:20');
输出:8
select day('2021-08-14 10:05:20');
输出:14
9. 返回日期中的时/分/秒
select hour('2021-08-14 10:05:20');
输出:10
select minute('2021-08-14 10:05:20');
输出:5
select second('2021-08-14 10:05:20');
输出:20
10. 返回日期在当年的第几周
select weekofyear('2021-08-14 10:05:20');
输出:32
11. 返回日期在当前周的第几天(注:周日为第1天)
select dayofweek('2021-08-14 10:05:20'); --周六
输出:7
12. 日期比较函数,返回开始日期减去结束日期的天数
说明:前者大于后者,返回值为正,否则,返回值为负。
select datediff('2021-08-14','2021-08-08');
输出:6
select datediff(current_date(),date_add(current_date(),-10));
输出:10
select datediff(current_date(),date_add(current_date(),10));
输出:-10
13. 日期减少函数,返回日期前n天的日期
select date_sub('2021-08-14',6);
输出:2021-08-08
14. 日期增加函数,返回日期后n天的日期
select date_add('2021-08-14',6);
输出:2021-08-20
--取得昨天日期:
select date_add(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),-1);
select date_sub(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),1);
-- 取得明天日期:
select date_add(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),1);
select date_sub(from_unixtime(unix_timestamp(),'yyyy-MM-dd'),-1);
15. 返回两个日期之间包含的月数(结果为double类型)
select months_between('2021-10-14','2021-05-04');
输出:5.32258065
16. 获取日期月初(参数MM),年初日期(参数YY)
select trunc(current_date(),'MM');
输出:2021-08-01
select trunc(current_date(),'YY');
输出:2021-01-01
17. 获取日期当月最后一天
select last_day(current_date());
输出:2021-08-31
18. 返回当前日期之后的下个星期几的日期
说明:参数为MO,TU,WE,TH,FR,SA,SU,也可以是两个缩写字母可以是三个可以是全名。
select next_day('2021-08-14', 'TU'); --得到021-08-14后的下个周二
输出:2021-08-17
select next_date('2020-01-01','Fri'); --得到2020-01-01后的下个周五
输出:2020-01-03
19. yyyymmdd和yyyy-mm-dd日期间切换
思路:先转换成时间戳,再由时间戳转换为对应格式。
select from_unixtime(unix_timestamp('20210814','yyyymmdd'),'yyyy-mm-dd');
输出:2021-08-14
select from_unixtime(unix_timestamp('2021-08-14','yyyy-mm-dd'),'yyyymmdd') ;
输出:20210814
20. 取最近30天数据
seelct * from table where datediff(current_timestamp(),create_time)<=30;
--要从表中运行
21. 两个日期相差多少小时
select (unix_timestamp('2021-08-14 10:18:54')-unix_timestamp('2021-08-14 08:18:54'))/3600;
输出:2.0
22. 两个日期相差多少分钟