now(): 获取当前系统日期+时间(精确到秒); curdate(): 获取当前系统日期( 精确到天);
SELECT NOW();
SELECT CURDATE();
year(date): 获取指定date的年份; month(date): 获取指定date的月份 ; day(date): 获取指定date的日;
SELECT DAY(NOW());
SELECT YEAR('2022-08-23')
SELECT MONTH(NOW())
dayofyear(date):获取指定日期是一年的第几天; dayofmonth(date):获取指定日期是一个月的第几天; dayofweek(date):获取指定日期是一周的第几天;
SELECT DAYOFYEAR(NOW());
SELECT DAYOFMONTH(NOW());
SELECT DAYOFWEEK(NOW());
date_add(date, interval expr type):获取指定日期/时间值加上一个时间间隔expr的时间值; interval是固定标志,expr 表示数量,可以为正负,表示加减,type表示日期类型 ;
日期类型:
SECOND 秒
MINUTE 分钟
HOUR 小时
DAY 天
WEEK 周
MONTH 月份
QUARTER 季度
YEAR 年份
示例:
select date_add(now(),interval 1 hour);
select date_add(now(),interval -2 hour);
select date_add(now(),interval 1 day);
datediff(date1,date2):获取起始时间date2和结束时间date1之间的天数(date1-date2); 注意:参数传递的是日期时间值,DATEDIFF函数仅将日期部分用于计算,并忽略时间部分(只有值的日期部分参与计算);
SELECT DATEDIFF('2022-09-13','2022-09-12');
SELECT DATEDIFF('2022-09-13 12:12:12','2022-09-12 20:12:00');
SELECT DATEDIFF('2022-09-13','2022-09-18');
timestampdiff(unit,begin,end):求两个日期以时间戳的时间差(end-begin),unit参数是获取结果的日期类型;
SELECT TIMESTAMPDIFF(DAY, '2022-06-01', '2022-09-01') result;
SELECT TIMESTAMPDIFF(DAY, '2022-09-01 10:00:00', '2022-08-01 20:00:00') result;
SELECT TIMESTAMPDIFF(DAY, '2022-09-01', NOW()) result;
str_to_date(str, format): 将时间格式的字符串(str)转换成按照显示格式(format)的datetime类型的值; date_format(date, format): 将日期(date)转换为对应的字符串格式(format);
构建日期格式字符串的限定符:
%Y 四位的年份
%y 2位的年份
%m 月份(01,02...11,12
%c 月份(1,2,...11,12 )
%d 日( 01,02,...31)
%e 日(1,2,… 31)
%H 小时(24小时制)
%h 小时(12小时制)
%i 分钟(00,01...59 )
%s 秒(00,01,...59 )
常用字符串格式: %Y/%m/%d :2022/01/01 %Y-%m-%d : 2022-01-01 %Y-%m-%d %T : 2022-01-01 18:40:00
SELECT STR_TO_DATE('2022-09-06 10:20:30','%Y-%m-%d %T') result1;
SELECT STR_TO_DATE('2022-09-06 10:20:30','%Y-%m-%d') result2;
SELECT STR_TO_DATE('2022/09/06 10:20:30','%Y/%m/%d %T') result;
select date_format(now(), '%Y/%m/%d');
select date_format(now(), '%Y-%m-%d');
select date_format(now(), '%Y-%m-%d %T');
|