跳到主要内容

日期与时间函数

函数名描述示例
ADDDATE(d,n)计算起始日期 d 加上 n 天的日期SELECT ADDDATE('2022-06-10', INTERVAL 5 DAY);
->2022-06-15
ADDTIME(t,n)n 是一个时间表达式,时间 t 加上时间表达式 nSELECT ADDTIME('2022-06-10 10:00:00',5);
->2022-06-10 10:00:05
CURDATE()
CURRENT_DATE()
返回当前日期SELECT CURDATE();
->2022-06-10
CURRENT_TIME
CURTIME()
返回当前时间SELECT CURRENT_TIME();
->17:10:31
CURRENT_TIMESTAMP()
LOCALTIME()
LOCALTIMESTAMP()
NOW()
SYSDATE()
返回当前日期和时间SELECT CURRENT_TIMESTAMP();
->2022-06-10 17:11:06
DATE()从日期或日期时间表达式中提取日期值SELECT DATE('2022-06-10');
->2022-06-10
DATEDIFF(d1,d2)计算日期 d1 与 d2 之间相隔的天数SELECT DATEDIFF('2022-06-10','2021-06-10');
->365
DATE_ADD(d,INTERVAL expr type)计算起始日期 d 加上一个时间段后的日期,type 可以是second、minute、hour、day、week、month、year 等SELECT DATE_ADD('2022-06-10 17:17:21', INTERVAL -3 HOUR);
->2022-06-10 14:17:21
DATE_FORMAT(d,f)按表达式 f 的要求显示日期 dSELECT DATE_FORMAT('2022-06-10 17:21:11','%Y-%m-%d %r');
->2022-06-10 05:21:11 PM
DATE_SUB(date,INTERVAL expr type)函数从日期减去指定的时间间隔SELECT DATE_SUB(
CURRENT_DATE(),INTERVAL 2 DAY);
->2022-06-08
DAY(d)返回日期值 d 的日期部分SELECT DAY('2022-06-10');
->10
DAYNAME(d)返回日期 d 是星期几,如 Monday,TuesdaySELECT DAYNAME('2022-06-10 17:30:30');
->Friday
DAYOFMONTH(d)计算日期 d 是本月的第几天SELECT DAYOFMONTH('2022-06-10 17:31:11');
->10
DAYOFWEEK(d)计算日期 d 是星期几,1 表示星期日,2 表示星期一,以此类推SELECT DAYOFWEEK('2022-06-10 17:35:11');
->6
DAYOFYEAR(d)计算日期 d 是本年的第几天SELECT DAYOFYEAR('2022-06-10 18:02:11');
->161
EXTRACT(type FROM d)从日期 d 中获取指定的值,type 指定返回的值。type 可以是second、minute、hour、day、week、month、year 等SELECT EXTRACT(MONTH FROM '2022-06-10 18:02:33') ;
->6
HOUR(t)返回 t 中的小时值SELECT HOUR('18:06:31');
->18
LAST_DAY(d)返回给定日期的月份的最后一天SELECT LAST_DAY("2022-06-10");
->2022-06-30
MAKEDATE(year, day-of-year)返回给定参数年份 year 和所在年中的天数序号,返回的是一个日期SELECT MAKEDATE(2022,161);
->2022-06-10
MAKETIME(hour, minute, second)组合时间,参数分别为小时、分钟、秒SELECT MAKETIME(11,35,4);
->11:35:04
MICROSECOND(date)返回日期参数所对应的微秒数SELECT MICROSECOND('2022-06-10 18:12:00.000023');
->23
MINUTE(t)返回 t 中的分钟值SELECT MINUTE('18:12:31');
->12
MONTHNAME(d)返回日期当中的月份,如 NovemberSELECT MONTHNAME('2022-06-10 18:13:19');
->June
MONTH(d)返回日期 d 中的月份值SELECT MONTH('2022-06-10 18:14:11');
->6
PERIOD_ADD(period, number)给 年-月 组合日期添加一个时段SELECT PERIOD_ADD(202206,5);
->202211
PERIOD_DIFF(period1, period2)返回两个时段之间的月份差值SELECT PERIOD_DIFF(202204,202012);
->16
QUARTER(d)返回日期 d 是第几季节SELECT QUARTER('2022-06-10 18:16:29');
->2
SECOND(t)返回 t 中的秒钟值SELECT SECOND('18:17:36');
->36
SEC_TO_TIME(s)以秒为单位的时间 s 转换为时分秒的格式SELECT SEC_TO_TIME(4320);
->01:12:00
STR_TO_DATE(string, format_mask)将字符串转变为日期SELECT STR_TO_DATE('June 10 2022','%M %d %Y');
->2022-06-10
SUBDATE(d,n)日期 d 减去 n 天后的日期SELECT SUBDATE('2022-06-10 18:19:27',15);
->2022-05-26 18:19:27
SUBTIME(t,n)时间 t 减去 n 秒的时间SELECT SUBTIME('2022-06-10 18:21:11',5);
->2022-06-10 18:21:06
TIME(expression)提取传入表达式的时间部分SELECT TIME('18:22:10');
->18:22:10
TIME_FORMAT(t,f)按表达式 f 的要求显示时间 tSELECT TIME_FORMAT('18:22:59','%r');
06:22:59 PM
TIME_TO_SEC(t)将时间 t 转换为秒SELECT TIME_TO_SEC('18:24:00');
->66240
TIMEDIFF(time1, time2)计算时间差值SELECT TIMEDIFF('18:24:11','13:10:10');
->05:14:01
TIMESTAMP(expression, interval)单个参数时,返回日期时间表达式,2个参数时,返回日期时间表达式和参数SELECT TIMESTAMP('2022-06-10', '18:25:17');
->2022-06-10 18:25:17
TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)计算时间差,返回 datetime_expr2 − datetime_expr1 的时间差SELECT TIMESTAMPDIFF(DAY,'2020-12-23','2022-04-02');
->465
SELECT TIMESTAMPDIFF(MONTH,'2020-12-23','2022-04-02');
->15
TO_DAYS(d)计算日期 d 距离 0000 年 1 月 1 日的天数SELECT TO_DAYS('2022-06-10 00:00:00');
->738681
WEEK(d)计算日期 d 是本年的第几个星期,范围是 0 到 53SELECT WEEK('2022-06-10 00:00:00');
->23
WEEKDAY(d)日期 d 是星期几,0 表示星期一,1 表示星期二SELECT WEEKDAY('2022-06-10');
->4
WEEKOFYEAR(d)计算日期 d 是本年的第几个星期,范围是 0 到 53SELECT WEEKOFYEAR('2022-06-10 11:11:11');
->23
YEAR(d)返回年份SELECT YEAR('2022-06-10');
->2022
YEARWEEK(date, mode)返回年份及第几周(0到53),mode 中 0 表示周日,1 表示周一,以此类推SELECT YEARWEEK('2022-06-10');
->202223