日期函数
- 当前日期 时间 NOW、CURDATE、CURTIME
select now (); # 2022-05-20 13:47:50 当前系统日期+时间
select getdate(); # 2022-05-20 13:47:50 当前系统日期+时间
select curdate(); # 2022-05-20 当前系统日期
select curtime(); # 13:47:50 当前系统时间
- 指定部分年月日
① 年月日 YEAR、MONTH、DAY 、HOUR、 MINUTE、SECOND、WEEKOFYEAR
select now (); # 2022-05-20 13:47:50
select year(now()); # 2022 年
select month(now()); # 5 月
select monthname(now()); # May (英文)
select day(now()); # 20
select hour(now()); # 13
select minute(now()); # 47
select second(now()); # 50
select weekofyear(now()); # 20 今年的第多少周
select concat(year(now(),'-','01'); # 2022-01 --取1月份
② 指定年月日时分秒 DATEPART
格式:DATEPART(part,date/string)
select datepart(year ,2022-05-20 13:47:50); # 2022
select datepart(mm,2022-05-20 13:47:50); # 5
select datepart(ss,2022-05-20 13:47:50); # 50
......
part:要取出的指定日期格式、时间缩写
- 日期与字符互转
① 将日期转换成字符 DATE_FORMAT
格式:date_format(日期类型数据,'日期格式');
select date_format(now(),'%Y-%m-%d %H:%i:%s'); # 2022-05-20 13:47:50
select date_format(now(),'%Y-%m-%d %H:%i'); # 2022-05-20 13:47
select date_format(NOW(),'%Y-%m-%d %H'); # 2022-05-20 13
select date_format(now(),'%Y-%m-%d'); # 2022-05-20
select date_format(now(),'%H:%i:%s'); # 13:47:50
select date_format(now(),'%H'); # 13
'%Y-%m-%d' ==> '%Y/%m/%d'
select date_format(now(),'%Y/%m/%d'); # 2022/05/20
'%Y-%m-%d' ==> '%Y%m%d'
select date_format(now(),'%Y%m%d'); # 20220520
'%Y%m%d' ==> '%Y-%m-%d'
select date_format(20220520,'%Y-%m-%d') # 2020-05-20
select date_format(20220520134750,'%Y-%m-%d %H:%i:%s') #2022-05-20 13:47:50
......
② 将字符转换成日期 STR_TO_DATE
格式:STR_TO_DATE(str,format)
函数是将时间格式的字符串(str),按照所提供的显示格式(format)转换为DATETIME类型的值
select str_to_date('2020-05-20 13:47:50','%Y-%m-%d %H:%i:%s'); # 2020-05-20 13:47:50
- 日期差值
① 2个日期天数差 DATEDIFF(start,end)
select datediff('2022-05-20','2022-05-16'); # 4
② 指定日期增减间隔数 DATEADD(datepart,number,date)
date 参数是合法的日期表达式 ,number 添加的间隔数,datepart 参数参考图“part 缩写”
select now(); # 系统时间 2022-05-20 13:47:50
select dateadd(yy,2,getdate()); # 2024-05-20 13:47:50 系统时间增加2年
select dateadd(mm,2,getdate()); # 2022-07-20 13:47:50 系统时间增加2月
select dateadd(dd,-2,getdate()); # 2022-05-18 13:47:50 系统时间减少2天
......
- 时间戳转换函数
① 将日期格式转成时间戳 UNIX_TIMESTAMP()
select now(); # 系统时间 2022-05-20 13:47:50
select unix_timestamp(now()); # 1653025670
② 将时间戳转成日期格式 FROM_UNIXTIME(时间戳,'%Y-%m-%d %H:%i:%s')
select from_unixtime(1653025670,'%Y-%m-%d %H:%i:%s'); # 2022-05-20 13:47:50