MySQL 提供了丰富的日期和时间函数,用于处理 DATE、DATETIME 和 TIMESTAMP 类型的数据。这些函数可以完成从简单的格式化到复杂的日期计算等各种任务。以下是常用的 MySQL 日期时间函数及其用法:
创建日期和时间
CURRENT_DATE() 或 CURDATE()
• 返回当前日期(不包含时间部分)。
SELECT CURRENT_DATE();CURRENT_TIME() 或 CURTIME()
• 返回当前时间(不包含日期部分)。
SELECT CURRENT_TIME();NOW()
• 返回当前日期和时间。
SELECT NOW();SYSDATE()
• 返回系统当前日期和时间,与 NOW() 类似,但 SYSDATE() 在函数调用时返回确切的时间,而 NOW() 在语句开始时就确定了时间。
SELECT SYSDATE();UTC_DATE()
• 返回当前的 UTC 日期。
SELECT UTC_DATE();UTC_TIME()
• 返回当前的 UTC 时间。
SELECT UTC_TIME();UTC_TIMESTAMP()
• 返回当前的 UTC 日期和时间。
SELECT UTC_TIMESTAMP();
格式化日期和时间
DATE_FORMAT(date, format)
• 按指定格式返回日期字符串。
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');STR_TO_DATE(str, format)
• 将字符串按照指定格式转换为日期。
SELECT STR_TO_DATE('2024-12-05 15:30:00', '%Y-%m-%d %H:%i:%s');
提取日期和时间组件
YEAR(date)
• 返回年份。
SELECT YEAR('2024-12-05');MONTH(date)
• 返回月份。
SELECT MONTH('2024-12-05');DAY(date) 或 DAYOFMONTH(date)
• 返回一个月中的某一天。
SELECT DAY('2024-12-05');HOUR(time)
• 返回小时数。
SELECT HOUR('15:30:00');MINUTE(time)
• 返回分钟数。
SELECT MINUTE('15:30:00');SECOND(time)
• 返回秒数。
SELECT SECOND('15:30:00');
日期和时间计算
DATE_ADD(date, INTERVAL expr unit) 或 ADDDATE(date, INTERVAL expr unit)
• 添加一个时间间隔到给定日期。
SELECT DATE_ADD('2024-12-05', INTERVAL 1 DAY);DATE_SUB(date, INTERVAL expr unit) 或 SUBDATE(date, INTERVAL expr unit)
• 从给定日期减去一个时间间隔。
SELECT DATE_SUB('2024-12-05', INTERVAL 1 DAY);DATEDIFF(expr1, expr2)
• 计算两个日期之间的天数差。
SELECT DATEDIFF('2024-12-05', '2024-12-01');TIMEDIFF(expr1, expr2)
• 计算两个时间之间的差异。
SELECT TIMEDIFF('15:30:00', '14:30:00');TIMESTAMPDIFF(unit, datetime_expr1, datetime_expr2)
• 计算两个日期/时间表达式之间的差异,单位可以是:MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, 或 YEAR。
SELECT TIMESTAMPDIFF(YEAR, '2020-01-01', '2024-12-05');
其他有用的函数
LAST_DAY(date)
• 返回指定月份的最后一天。
SELECT LAST_DAY('2024-12-01');PERIOD_DIFF(P1, P2)
• 返回两个期间(YYMM或YYYYMM格式)之间的月份数差。
SELECT PERIOD_DIFF(202412, 202001);WEEK(date[, mode])
• 返回一年中的周数,模式参数可选,默认为0。
SELECT WEEK('2024-12-05');QUARTER(date)
• 返回一年中的季度。
SELECT QUARTER('2024-12-05');EXTRACT(unit FROM date)
• 从日期中提取特定的时间单位。
SELECT EXTRACT(YEAR FROM '2024-12-05');
这些函数可以帮助你在MySQL数据库中高效地管理和操作日期和时间数据。根据具体需求选择合适的函数,并结合SQL查询来实现所需的功能。