MySQL 提供了多种日期和时间函数,帮助开发者在处理日期、时间和日期时间字段时进行各种操作。以下是常见的 MySQL 日期函数的介绍和示例:
1. CURDATE()
- 功能:返回当前日期(不包含时间),格式为
YYYY-MM-DD
。 - 语法:
CURDATE()
- 示例:
SELECT CURDATE(); -- 输出: 2025-06-12
2. CURTIME()
- 功能:返回当前时间(不包含日期),格式为
HH:MM:SS
。 - 语法:
CURTIME()
- 示例:
sql
SELECT CURTIME(); -- 输出: 14:30:45
3. NOW()
- 功能:返回当前日期和时间,格式为
YYYY-MM-DD HH:MM:SS
。 - 语法:
NOW()
- 示例:
SELECT NOW(); -- 输出: 2025-06-12 14:30:45
4. UTC_DATE()
- 功能:返回当前的 UTC 日期(不包含时间)。
- 语法:
UTC_DATE()
- 示例:
SELECT UTC_DATE(); -- 输出: 2025-06-12
5. UTC_TIME()
- 功能:返回当前的 UTC 时间(不包含日期)。
- 语法:
UTC_TIME()
- 示例:
SELECT UTC_TIME(); -- 输出: 14:30:45
6. DATE()
- 功能:从日期时间值中提取日期部分,格式为
YYYY-MM-DD
。 - 语法:
DATE(datetime)
- 示例:
SELECT DATE('2025-06-12 14:30:45'); -- 输出: 2025-06-12
7. TIME()
- 功能:从日期时间值中提取时间部分,格式为
HH:MM:SS
。 - 语法:
TIME(datetime)
- 示例:
SELECT TIME('2025-06-12 14:30:45'); -- 输出: 14:30:45
8. YEAR()
- 功能:提取日期中的年份部分。
- 语法:
YEAR(date)
- 示例:
SELECT YEAR('2025-06-12'); -- 输出: 2025
9. MONTH()
- 功能:提取日期中的月份部分。
- 语法:
MONTH(date)
- 示例:
SELECT MONTH('2025-06-12'); -- 输出: 6
10. DAY()
或 DAYOFMONTH()
- 功能:提取日期中的天数部分。
- 语法:
DAY(date)
或DAYOFMONTH(date)
- 示例:
SELECT DAY('2025-06-12'); -- 输出: 12
11. HOUR()
- 功能:提取时间中的小时部分。
- 语法:
HOUR(time)
- 示例:
SELECT HOUR('14:30:45'); -- 输出: 14
12. MINUTE()
- 功能:提取时间中的分钟部分。
- 语法:
MINUTE(time)
- 示例:
SELECT MINUTE('14:30:45'); -- 输出: 30
13. SECOND()
- 功能:提取时间中的秒数部分。
- 语法:
SECOND(time)
- 示例:
SELECT SECOND('14:30:45'); -- 输出: 45
14. DATE_ADD()
- 功能:向日期或时间添加指定的时间间隔。
- 语法:
DATE_ADD(date, INTERVAL expr unit)
date
:目标日期或时间。expr
:要添加的时间量。unit
:时间单位(如 SECOND, MINUTE, HOUR, DAY, MONTH, YEAR)。
- 示例:
SELECT DATE_ADD('2025-06-12', INTERVAL 5 DAY); -- 输出: 2025-06-17
15. DATE_SUB()
- 功能:从日期或时间中减去指定的时间间隔。
- 语法:
DATE_SUB(date, INTERVAL expr unit)
- 示例:
SELECT DATE_SUB('2025-06-12', INTERVAL 5 DAY); -- 输出: 2025-06-07
16. DATEDIFF()
- 功能:返回两个日期之间的天数差。
- 语法:
DATEDIFF(date1, date2)
date1
:结束日期。date2
:开始日期。
- 示例:
SELECT DATEDIFF('2025-06-12', '2025-06-07'); -- 输出: 5
17. TIMESTAMPDIFF()
- 功能:返回两个日期时间之间的差值,以指定的单位表示。
- 语法:
TIMESTAMPDIFF(unit, datetime1, datetime2)
unit
:差值的单位(如 SECOND, MINUTE, HOUR, DAY, MONTH, YEAR)。datetime1
和datetime2
:要比较的两个日期时间。
- 示例:
SELECT TIMESTAMPDIFF(DAY, '2025-06-01', '2025-06-12'); -- 输出: 11
18. STR_TO_DATE()
- 功能:将字符串转换为日期时间格式。
- 语法:
STR_TO_DATE(string, format)
string
:包含日期时间数据的字符串。format
:日期时间格式。
- 示例:
SELECT STR_TO_DATE('12-06-2025', '%d-%m-%Y'); -- 输出: 2025-06-12
19. DATE_FORMAT()
- 功能:将日期时间格式化为字符串。
- 语法:
DATE_FORMAT(date, format)
date
:日期时间。format
:目标格式。
- 示例:
SELECT DATE_FORMAT('2025-06-12', '%Y/%m/%d'); -- 输出: 2025/06/12
20. FROM_UNIXTIME()
- 功能:将 UNIX 时间戳转换为日期时间格式。
- 语法:
FROM_UNIXTIME(unix_timestamp, format)
unix_timestamp
:UNIX 时间戳(自 1970-01-01 00:00:00 UTC 起的秒数)。
- 示例:
SELECT FROM_UNIXTIME(1686573300); -- 输出: 2025-06-12 14:30:00
21. UNIX_TIMESTAMP()
- 功能:将日期时间转换为 UNIX 时间戳。
- 语法:
UNIX_TIMESTAMP(datetime)
- 示例:
SELECT UNIX_TIMESTAMP('2025-06-12 14:30:00'); -- 输出: 1686573300