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 年份
示例:
// 获取当前时间增加1个小时的结果
select date_add(now(),interval 1 hour);
// 获取当前时间减去2个小时的结果
select date_add(now(),interval -2 hour);
// 获取当前时间增加1天的结果
select date_add(now(),interval 1 day);
datediff(date1,date2):获取起始时间date2和结束时间date1之间的天数(date1-date2);
注意:参数传递的是日期时间值,DATEDIFF函数仅将日期部分用于计算,并忽略时间部分(只有值的日期部分参与计算);
//结果:1
SELECT DATEDIFF('2022-09-13','2022-09-12');
//结果:1
SELECT DATEDIFF('2022-09-13 12:12:12','2022-09-12 20:12:00');
//结果:-5
SELECT DATEDIFF('2022-09-13','2022-09-18');
timestampdiff(unit,begin,end):求两个日期以时间戳的时间差(end-begin),unit参数是获取结果的日期类型;
// 92天
SELECT TIMESTAMPDIFF(DAY, '2022-06-01', '2022-09-01') result;
// -30天
SELECT TIMESTAMPDIFF(DAY, '2022-09-01 10:00:00', '2022-08-01 20:00:00') result;
// 22天
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;
--------------------------------------
// 2022/09/20
select date_format(now(), '%Y/%m/%d');
//2022-09-13
select date_format(now(), '%Y-%m-%d');
// 2022-09-21 16:02:37
select date_format(now(), '%Y-%m-%d %T');