MySQL中时间相关的函数很多,使用也很灵活。
1、str_to_date(str, format) 将字符串转为日期类型
select str_to_date('2020-12-21', '%Y-%m-%d'),只有日期部分,转为date类型
select str_to_date('12:25:30', '%H:%i:%s'),只有时间部分,转为time类型
select str_to_date('2020-12-21 12:25:30', '%Y-%m-%d %T'),同时包含日期和时间部分,转为datetime类型
其实,判断datetime字段在某个范围,只需要使用
datetime_field between '2020-09-01 08:30:00' and '2020-09-10 12:30:00' 即可,如果省略字符串中的time部分,效果和时间为00:00:00同。
2、date(str),字符串转为date类型
select date('2020-12-21')
2020-12-21
3、datediff(str1,str2) 两个日期相差几天,只有两个日期字符串的date部分参与计算
SELECT DATEDIFF('2020-12-31 23:59:59','2020-12-29')
1
4、date_add(exp, 时间单位unit)
时间单位包括:YEAR, DAY等,根据exp的类型和时间单位返回date或者datetime类型,如果exp为date类型,unit只到年月日,则返回date,如果exp为datetime,则返回datetime,如果exp为date类型,unit精细时间单位,则返回datetime类型
SELECT DATE_ADD('2020-12-31', INTERVAL 1 SECOND), DATE_ADD('2020-12-31 12:20:00', INTERVAL 1 DAY)
2020-12-31 00:00:01 , 2021-01-01 12:20:00
5、adddate(date, days) ,subdate(date, days) 在date基础上加/减days天
select adddate('2020-12-31',5)
2021-01-05, 2020-12-26
6、date_format(date, format)
将日期转为指定时间格式的字符串,
%Y为4位年份,%y两位年份,%m数字月份,%M英文月份,%d月中第几天,%D月中第几天加序数例如1st,2nd等
%p为AM,PM,%H 24小时,%h12小时,%I 12小时,%i分钟,%S,%s为秒,%T24小时,hh:mm:ss格式
%U%u年中第几周,%W星期几,英文
SELECT DATE_FORMAT('2020-10-04 22:23:00', '%d %m %Y'),DATE_FORMAT('2020-10-04 22:23:00', '%W')
04 10 2020,Sunday
7、DAYNAME(date) 周几
SELECT DAYNAME('2020-10-04')
Sunday
8、dayofmonth(date) 所在月第几天
select dayofmonth('2020-10-04')
4
9、LAST_DAY(date) 日期所在月的最后一天
select LAST_DAY(NOW())
2021-03-31
10、quarter(date) 季度,数字
select quarter(NOW())
1