MySQL 时间函数
1. 基础用法
1.1 NOW()
SELECT NOW();
# 输出 2022-05-14 13:26:49
1.2 CURDATE()
SELECT CURDATE();
# 输出 2022-05-14
1.3 CURTIME()
SELECT CURTIME();
# 输出 13:28:39
1.4 DATE()
提取时间的日期部分
SELECT DATE(NOW());
# 输出 2022-05-14
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);
# 输出 2022-05-15 14:05:01
SELECT DATE_SUB(NOW(), INTERVAL 1 DAY);
# 输出 2022-05-13 14:05:30
1.7 ADDDATE、SUBDATE
SELECT ADDDATE(NOW(), INTERVAL 1 DAY);
# 输出 2022-05-15 14:05:01
SELECT SUBDATE(NOW(), 1);
# 输出 2022-05-13 14:05:30
1.8 DATEDIFF
DATEDIFF计算两个日期之间间隔的天数,(时分秒不参与计算)
SELECT DATEDIFF('2022-05-05', '2022-05-01');
# 输出 4
1.9 TIMESTAMPDIFF
计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数
SELECT TIMESTAMPDIFF(HOUR, '2022-05-01 00:00:00', '2022-05-01 23:59:59');
# 输出 23
SELECT TIMESTAMPDIFF(MINUTE, '2022-05-01 00:00:00', '2022-05-01 00:20:00');
# 输出 20
SELECT TIMESTAMPDIFF(DAY, '2022-05-01 00:00:00', '2022-05-02 23:59:59');
# 输出 1
SELECT TIMESTAMPDIFF(MONTH, '2022-05-01 00:00:00', '2022-06-02 23:59:59');
# 输出 1
1.10 DATE_FORMAT
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');
# 输出 2022-05-14
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %T');
# 输出 2022-05-14 13:45:14
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %T.%f');
# 输出 2022-05-14 13:47:00.000000
# 周的天 (0=星期日, 6=星期六)
SELECT DATE_FORMAT(NOW(), '%w');
1.11 STR_TO_DATE
SELECT STR_TO_DATE('2022-05-14 13:50:35', '%Y-%m-%d %H:%i:%s');
SELECT STR_TO_DATE('2022-05-14 13:50:35', '%Y-%m-%d %T');
# 输出 2022-05-14 13:50:35
SELECT STR_TO_DATE('2022-05-14 13:50:35', '%Y-%m-%d');
# 输出 2022-05-14
1.12 LAST_DAY
# 获取当月最后一天
SELECT LAST_DAY(NOW());
# 输出 2022-05-31
2. 组合用法
2.1 获取当月最后一天
SELECT LAST_DAY(NOW());
# 输出 2022-05-31
2.2 获取当月第一天
# 当前时间 2022-05-14 14:08:46
SELECT SUBDATE(CURDATE(), DAY(CURDATE()) - 1);
SELECT ADDDATE(LAST_DAY(SUBDATE(NOW(), INTERVAL 1 MONTH)), 1);
# 输出 2022-05-01
2.3 获取当月第几日
# 当前时间 2022-05-14 14:08:46
SELECT DAY(CURDATE());
# 输出 14
2.4 获取下个月第一天
# 当前时间 2022-05-14 14:08:46
SELECT ADDDATE(LAST_DAY(NOW()), 1);
# 输出 2022-06-01
2.5 获取下个月最后一天
# 当前时间 2022-05-14 14:08:46
SELECT LAST_DAY(ADDDATE(LAST_DAY(NOW()), 1));
# 输出 2022-06-30
2.6 获取上个月第一天
# 当前时间 2022-05-14 14:08:46
SELECT ADDDATE(LAST_DAY(SUBDATE(NOW(), INTERVAL 2 MONTH)), 1);
# 输出 2022-04-30
2.7 获取上个月最后一天
# 当前时间 2022-05-14 14:08:46
SELECT LAST_DAY(SUBDATE(NOW(), INTERVAL 1 MONTH));
# 输出 2022-04-30
2.8 获取当月的天数
# 当前时间 2022-05-14 14:08:46
SELECT DAY(LAST_DAY(NOW()));
# 输出 31
2.9 获取上个月的天数
# 当前时间 2022-05-14 14:08:46
SELECT DAY(LAST_DAY(SUBDATE(NOW(), INTERVAL 1 MONTH)));
# 输出 30
2.10 获取下个月的天数
# 当前时间 2022-05-14 14:08:46
SELECT DAY(LAST_DAY(ADDDATE(LAST_DAY(NOW()), 1)));
# 输出 30
2.11 当日时间范围
SELECT STR_TO_DATE('2022-05-01', '%Y-%m-%d %H:%i:%s');
# 输出 2022-05-01 00:00:00
SELECT STR_TO_DATE(CONCAT('2022-05-01', '23:59:59'), '%Y-%m-%d %H:%i:%s');
# 输出 2022-05-01 23:59:59
SELECT STR_TO_DATE(CURDATE(), '%Y-%m-%d %H:%i:%s');
# 输出 2022-05-14 00:00:00
SELECT STR_TO_DATE(CONCAT(CURDATE(), '23:59:59'), '%Y-%m-%d %H:%i:%s');
# 输出 2022-05-14 23:59:59
本文作者:逢生博客
本文链接:https://www.cnblogs.com/wufengsheng/p/16295810.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步