programming/mysql

时间函数
Edited: Saturday 28 June 2025

时间函数
目录

  1. 基础用法
    1.1 NOW()
    1.2 CURDATE()
    1.3 CURTIME()
    1.4 DATE()
    1.5 EXTRACT()
    1.6 DATE_ADD、DATE_SUB
    1.7 ADDDATE、SUBDATE
    1.8 DATEDIFF
    1.9 TIMESTAMPDIFF
    1.10 DATE_FORMAT
    1.11 STR_TO_DATE
    1.12 LAST_DAY
  2. 组合用法
    2.1 获取当月最后一天
    2.2 获取当月第一天
    2.3 获取当月第几日
    2.4 获取下个月第一天
    2.5 获取下个月最后一天
    2.6 获取上个月第一天
    2.7 获取上个月最后一天
    2.8 获取当月的天数
    2.9 获取上个月的天数
    2.10 获取下个月的天数
    2.11 当日时间范围
  3. 基础用法
    1.1 NOW()
    SELECT NOW();

输出 14 May 2022 13:26:49

1.2 CURDATE()
SELECT CURDATE();

输出 14 May 2022

1.3 CURTIME()
SELECT CURTIME();

输出 13:28:39

1.4 DATE()
提取时间的日期部分

SELECT DATE(NOW());

输出 14 May 2022

1.5 EXTRACT()
返回时间的指定部分的值

SELECT EXTRACT(YEAR FROM NOW()), EXTRACT(MONTH FROM NOW()), EXTRACT(DAY FROM NOW());

输出 2022 5 14

1.6 DATE_ADD、DATE_SUB
在指定时间上增加/减少指定日期,具体类型有year,month,day等

SELECT DATE_ADD(NOW(), 1);

输出 15 May 2022 14:05:01

SELECT DATE_SUB(NOW(), INTERVAL 1 DAY);

输出 13 May 2022 14:05:30

1.7 ADDDATE、SUBDATE
SELECT ADDDATE(NOW(), INTERVAL 1 DAY);

输出 15 May 2022 14:05:01

SELECT SUBDATE(NOW(), 1);

输出 13 May 2022 14:05:30

1.8 DATEDIFF
DATEDIFF计算两个日期之间间隔的天数,(时分秒不参与计算)

SELECT DATEDIFF(‘ 5 May 2022 ’, ‘ 1 May 2022 ’);

输出 4

1.9 TIMESTAMPDIFF
计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数

SELECT TIMESTAMPDIFF(HOUR, ‘ 1 May 2022 00:00:00’, ‘ 1 May 2022 23:59:59’);

输出 23

SELECT TIMESTAMPDIFF(MINUTE, ‘ 1 May 2022 00:00:00’, ‘ 1 May 2022 00:20:00’);

输出 20

SELECT TIMESTAMPDIFF(DAY, ‘ 1 May 2022 00:00:00’, ‘ 2 May 2022 23:59:59’);

输出 1

SELECT TIMESTAMPDIFF(MONTH, ‘ 1 May 2022 00:00:00’, ‘ 2 June 2022 23:59:59’);

输出 1

1.10 DATE_FORMAT
SELECT DATE_FORMAT(NOW(), ‘%Y-%m-%d’);

输出 14 May 2022

SELECT DATE_FORMAT(NOW(), ‘%Y-%m-%d %T’);

输出 14 May 2022 13:45:14

SELECT DATE_FORMAT(NOW(), ‘%Y-%m-%d %T.%f’);

输出 14 May 2022 13:47:00.000000

周的天 (0=星期日, 6=星期六)

SELECT DATE_FORMAT(NOW(), ‘%w’);
1.11 STR_TO_DATE
SELECT STR_TO_DATE(‘ 14 May 2022 13:50:35’, ‘%Y-%m-%d %H:%i:%s’);
SELECT STR_TO_DATE(‘ 14 May 2022 13:50:35’, ‘%Y-%m-%d %T’);

输出 14 May 2022 13:50:35

SELECT STR_TO_DATE(‘ 14 May 2022 13:50:35’, ‘%Y-%m-%d’);

输出 14 May 2022

1.12 LAST_DAY

获取当月最后一天

SELECT LAST_DAY(NOW());

输出 31 May 2022

  1. 组合用法
    2.1 获取当月最后一天
    SELECT LAST_DAY(NOW());

输出 31 May 2022

2.2 获取当月第一天

当前时间 14 May 2022 14:08:46

SELECT SUBDATE(CURDATE(), DAY(CURDATE()) - 1);
SELECT ADDDATE(LAST_DAY(SUBDATE(NOW(), INTERVAL 1 MONTH)), 1);

输出 1 May 2022

2.3 获取当月第几日

当前时间 14 May 2022 14:08:46

SELECT DAY(CURDATE());

输出 14

2.4 获取下个月第一天

当前时间 14 May 2022 14:08:46

SELECT ADDDATE(LAST_DAY(NOW()), 1);

输出 1 June 2022

2.5 获取下个月最后一天

当前时间 14 May 2022 14:08:46

SELECT LAST_DAY(ADDDATE(LAST_DAY(NOW()), 1));

输出 30 June 2022

2.6 获取上个月第一天

当前时间 14 May 2022 14:08:46

SELECT ADDDATE(LAST_DAY(SUBDATE(NOW(), INTERVAL 2 MONTH)), 1);

输出 30 April 2022

2.7 获取上个月最后一天

当前时间 14 May 2022 14:08:46

SELECT LAST_DAY(SUBDATE(NOW(), INTERVAL 1 MONTH));

输出 30 April 2022

2.8 获取当月的天数

当前时间 14 May 2022 14:08:46

SELECT DAY(LAST_DAY(NOW()));

输出 31

2.9 获取上个月的天数

当前时间 14 May 2022 14:08:46

SELECT DAY(LAST_DAY(SUBDATE(NOW(), INTERVAL 1 MONTH)));

输出 30

2.10 获取下个月的天数

当前时间 14 May 2022 14:08:46

SELECT DAY(LAST_DAY(ADDDATE(LAST_DAY(NOW()), 1)));

输出 30

2.11 当日时间范围
SELECT STR_TO_DATE(‘ 1 May 2022 ’, ‘%Y-%m-%d %H:%i:%s’);

输出 1 May 2022 00:00:00

SELECT STR_TO_DATE(CONCAT(‘ 1 May 2022 ’, ‘23:59:59’), ‘%Y-%m-%d %H:%i:%s’);

输出 1 May 2022 23:59:59

SELECT STR_TO_DATE(CURDATE(), ‘%Y-%m-%d %H:%i:%s’);

输出 14 May 2022 00:00:00

SELECT STR_TO_DATE(CONCAT(CURDATE(), ‘23:59:59’), ‘%Y-%m-%d %H:%i:%s’);

输出 14 May 2022 23:59:59