日期时间函数用于获取当前时间、提取日期中的某一部分、格式化显示时间等。在日志、订单、报表、统计分析场景中非常常见。
常见函数包括:
NOW():返回当前日期和时间CURDATE():返回当前日期CURTIME():返回当前时间
示例:
SELECT NOW();
SELECT CURDATE();
SELECT CURTIME();这些函数常用于:
- 记录创建时间
- 生成时间范围查询
- 显示当前系统日期时间
MONTH() 用于提取日期中的月份。
SELECT MONTH('2026-03-20');
SELECT MONTH(NOW());它常用于:
- 月度统计
- 月份筛选
- 报表分组
例如:
SELECT *
FROM orders
WHERE MONTH(created_at) = 3;可以使用 DAYNAME() 获取星期名称,也可以使用 WEEKDAY() 获取星期序号。
SELECT DAYNAME('2026-03-20');
SELECT WEEKDAY('2026-03-20');这类函数常用于:
- 周报表
- 排班系统
- 按星期维度做统计
如果想从日期时间中提取小时、分钟、秒,可以使用:
HOUR()MINUTE()SECOND()
示例:
SELECT HOUR('2026-03-20 14:35:40');
SELECT MINUTE('2026-03-20 14:35:40');
SELECT SECOND('2026-03-20 14:35:40');这种函数常见于:
- 时段统计
- 按小时聚合
- 业务时间分析
DATE_FORMAT() 用于按指定格式输出日期时间。
示例:
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d');
SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s');
SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日');它适合:
- 页面展示
- 报表输出
- 自定义日期格式转换
在分组统计中也很常用:
SELECT DATE_FORMAT(created_at, '%Y-%m') AS month_name, COUNT(*)
FROM orders
GROUP BY DATE_FORMAT(created_at, '%Y-%m');日期时间函数让 MySQL 可以直接完成时间提取、格式化和统计。最常见的高频函数通常是 NOW()、CURDATE()、MONTH()、HOUR() 和 DATE_FORMAT()。