MySQL 提供了多种日期处理函数,用于处理和操作日期和时间数据。这些函数可以帮助你执行如日期计算、时间转换、格式化输出等操作。以下是一些常用的 MySQL 日期处理函数及其用法:
日期和时间格式化函数
1. **DATE_FORMAT()**:将日期或时间戳格式化为字符串。
2. **TIME_FORMAT()**:将时间戳格式化为字符串。
SELECT DATE_FORMAT('2021-10-01 12:00:00', '%Y-%m-%d %H:%i:%s'); -- 输出:2021-10-01 12:00:00
SELECT TIME_FORMAT('2021-10-01 12:00:00', '%H:%i:%s'); -- 输出:12:00:00
日期和时间组件函数
1. **YEAR()**:返回日期中的年份。
2. **MONTH()**:返回日期中的月份。
3. **DAY()**:返回日期中的天。
4. **HOUR()**:返回时间戳中的小时。
5. **MINUTE()**:返回时间戳中的分钟。
6. **SECOND()**:返回时间戳中的秒。
SELECT YEAR('2021-10-01'); -- 输出:2021
SELECT MONTH('2021-10-01'); -- 输出:10
SELECT DAY('2021-10-01'); -- 输出:01
SELECT HOUR('2021-10-01 12:00:00'); -- 输出:12
SELECT MINUTE('2021-10-01 12:00:00'); -- 输出:00
SELECT SECOND('2021-10-01 12:00:00'); -- 输出:00
日期和时间计算函数
1. **CURDATE()**:返回当前日期。
2. **CURRENT_DATE()**:同 `CURDATE()`。
3. **CURTIME()**:返回当前时间。
4. **CURRENT_TIME()**:同 `CURTIME()`。
5. **NOW()**:返回当前日期和时间。
6. **CURRENT_TIMESTAMP()**:返回当前日期和时间戳。
SELECT CURDATE(); -- 输出:2021-10-01
SELECT CURRENT_DATE(); -- 输出:2021-10-01
SELECT CURTIME(); -- 输出:12:00:00
SELECT CURRENT_TIME(); -- 输出:12:00:00
SELECT NOW(); -- 输出:2021-10-01 12:00:00
SELECT CURRENT_TIMESTAMP(); -- 输出:2021-10-01 12:00:00
日期和时间转换函数
1. **FROM_UNIXTIME()**:将 UNIX 时间戳转换为日期和时间。
2. **UNIX_TIMESTAMP()**:将日期和时间转换为 UNIX 时间戳。
SELECT FROM_UNIXTIME(1633472000); -- 输出:2021-10-01 12:00:00
SELECT UNIX_TIMESTAMP('2021-10-01 12:00:00'); -- 输出:1633472000
日期和时间差函数
1. **TIMESTAMPDIFF()**:计算两个日期或时间戳之间的差异。
SELECT TIMESTAMPDIFF(HOUR, '2021-10-01 12:00:00', '2021-10-01 14:00:00'); -- 输出:2
日期和时间生成函数
1. **DATE_ADD()**:在日期上添加时间间隔。
2. **DATE_SUB()**:从日期中减去时间间隔。
3. **DATEDIFF()**:比较两个日期之间的差异。
SELECT DATE_ADD('2021-10-01', INTERVAL 1 DAY); -- 输出:2021-10-02
SELECT DATE_SUB('2021-10-01', INTERVAL 1 DAY); -- 输出:2021-09-30
SELECT DATEDIFF('2021-10-01', '2021-09-30'); -- 输出:1
日期和时间格式化函数(续)
4. **DATE()**:返回日期或时间戳的日期部分。
5. **TIME()**:返回日期或时间戳的时间部分。
SELECT DATE('2021-10-01 12:00:00'); -- 输出:2021-10-01
SELECT TIME('2021-10-01 12:00:00'); -- 输出:12:00:00
日期和时间组件函数(续)
6. **WEEK()**:返回日期是该年的第几周。
7. **QUARTER()**:返回日期所在的季度。
8. **MONTHNAME()**:返回日期中的月份名称。
9. **DAYNAME()**:返回日期中的星期名称。
SELECT WEEK('2021-10-01'); -- 输出:40
SELECT QUARTER('2021-10-01'); -- 输出:4
SELECT MONTHNAME('2021-10-01'); -- 输出:October
SELECT DAYNAME('2021-10-01'); -- 输出:Saturday
日期和时间生成函数(续)
10. **ADDTIME()**:将时间添加到时间戳。
11. **SUBTIME()**:从时间戳中减去时间。
12. **MAKEDATE()**:创建一个日期,指定年月和天。
13. **MAKETIME()**:创建一个时间戳,指定小时、分钟和秒。
SELECT ADDTIME('2021-10-01 12:00:00', '1:30:00'); -- 输出:2021-10-01 13:30:00
SELECT SUBTIME('2021-10-01 12:00:00', '1:30:00'); -- 输出:2021-10-01 10:30:00
SELECT MAKEDATE(2021, 10); -- 输出:2021-10-01
SELECT MAKETIME(12, 0, 0); -- 输出:12:00:00
日期和时间差函数(续)
14. **EXTRACT()**:从日期或时间戳中提取特定部分。
SELECT EXTRACT(HOUR FROM '2021-10-01 12:00:00'); -- 输出:12
总结
MySQL 提供了丰富的日期处理函数,可以帮助你轻松地处理和操作日期和时间数据。从格式化、组件提取、计算、转换,到生成和差值比较,这些函数涵盖了日期和时间处理的各个方面。掌握这些函数的使用,将使你在处理 MySQL 数据时更加得心应手。在实际应用中,根据具体需求选择合适的函数,可以提高工作效率并简化代码。不断练习和探索,你将能够更加熟练地运用这些日期处理函数,为你的数据库应用增添更多的功能和灵活性。