MySQL日期时间函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
-- 当前日期,当天是2022年1月6日,则返回 2022-01-06
select curdate();
-- 当前日期的天数,当天是2022年1月6日,则返回 6
select day(curdate());
-- 当月天数,当天是2022年1月6日,则返回 31
select day(last_day(curdate()));
-- 当前日期时间,2022-01-06 14:47:32
select now();
-- 上月今天日期,当天是2022年1月6日,则返回 2021-12-06
select date_add(curdate(), interval -1 month);
-- 上月今天时间,当天是2022年1月6日,则返回 2021-12-06 14:58:27
select date_add(now() , interval -1 month);
-- 上月今天时间戳,当天是2022年1月6日,则返回 1638773958
select unix_timestamp(date_add(now() , interval -1 month)) ;
-- 当前日期与上月今天天数,当天是2022年1月6日,则返回
-- 当月月第一天,当天是2022年1月6日,则返回 2022-01-01
select date_add(curdate(), interval - day(curdate()) + 1 day);
-- 本月最后一天,当天是2022年1月6日,则返回 2022-01-31
select last_day(curdate());
-- 上月第一天,当天是2022年1月6日,则返回 2021-12-01
select date_sub(curdate() - day(curdate()) + 1 , interval 1 month) ;
-- 上月最后一天,当天是2022年1月6日,则返回 2021-12-31
select last_day(date_sub(curdate() , interval 1 month));
-- 下月第一天,当天是2022年1月6日,则返回 2022-02-01
select date_add(curdate() - day(curdate()) + 1 , interval 1 month) ;
-- 下月最后一天,当天是2022年1月6日,则返回 2022-02-28
select last_day(date_add(curdate(), interval 1 month));
1
2
3
4
5
6
7
 
-- 计算两个日期之间的天数差,datediff(end_date,start_date)->返回天数 11
select datediff('2020-08-14 18:08:00','2020-08-03 20:09:10') as diff; -- 11
-- 计算两个日期之间的分钟差,timestampdiff(interval,start_date,end_date)->返回interval参数的值
-- interval可取值:SECOND ,MINUTE ,HOUR ,DAY , WEEK ,MONTH, QUARTER ,YEAR
select timestampdiff(second ,'2020-08-03 20:09:10','2020-08-14 18:08:00') as sdiff; -- 943130
select timestampdiff(YEAR ,'2020-08-03 20:09:10','2021-08-14 18:08:00') as sdiff; -- 1