MySQL中如何截取时间函数:实用技巧详解
MySQL中截取时间主要通过DATE_FORMAT()、EXTRACT()、YEAR()、MONTH()、DAY()等内置函数实现,这些函数能够灵活地从日期时间数据中提取特定部分,满足数据查询与处理的多样化需求,下面将详细介绍这些核心函数的使用方法及其实际应用场景。
常用时间截取函数及示例
DATE_FORMAT() 函数
这是最灵活的时间格式化函数,可以按指定格式输出日期时间的任何部分:

SELECT DATE_FORMAT('2023-10-05 14:30:45', '%Y') AS 年份; -- 2023
SELECT DATE_FORMAT('2023-10-05 14:30:45', '%m') AS 月份; -- 10
SELECT DATE_FORMAT('2023-10-05 14:30:45', '%d') AS 日期; -- 05
SELECT DATE_FORMAT('2023-10-05 14:30:45', '%H') AS 小时; -- 14
EXTRACT() 函数
专门用于提取日期时间的特定单元:
SELECT EXTRACT(YEAR FROM '2023-10-05 14:30:45') AS 年份; -- 2023 SELECT EXTRACT(MONTH FROM '2023-10-05 14:30:45') AS 月份; -- 10 SELECT EXTRACT(DAY FROM '2023-10-05 14:30:45') AS 日期; -- 05 SELECT EXTRACT(HOUR FROM '2023-10-05 14:30:45') AS 小时; -- 14
专用提取函数
MySQL提供了一系列快捷函数,直接获取特定部分:
SELECT YEAR('2023-10-05 14:30:45') AS 年份; -- 2023
SELECT MONTH('2023-10-05 14:30:45') AS 月份; -- 10
SELECT DAY('2023-10-05 14:30:45') AS 日期; -- 05
SELECT HOUR('2023-10-05 14:30:45') AS 小时; -- 14
SELECT MINUTE('2023-10-05 14:30:45') AS 分钟; -- 30
SELECT SECOND('2023-10-05 14:30:45') AS 秒数; -- 45
实际应用场景
按时间维度统计数据分析
-- 按年份统计订单数量 SELECT YEAR(order_date) AS 订单年份, COUNT(*) AS 订单数量 FROM orders GROUP BY YEAR(order_date); -- 按月统计销售额 SELECT DATE_FORMAT(sale_date, '%Y-%m') AS 年月, SUM(amount) AS 总销售额 FROM sales GROUP BY DATE_FORMAT(sale_date, '%Y-%m');
时间范围筛选
-- 查询2023年10月的所有记录 SELECT * FROM logs WHERE YEAR(create_time) = 2023 AND MONTH(create_time) = 10; -- 查询每天上午9点到12点的数据 SELECT * FROM data WHERE HOUR(record_time) BETWEEN 9 AND 12;
时间数据格式化展示
-- 将时间显示为"年-月"格式 SELECT DATE_FORMAT(create_time, '%Y年%m月') AS 创建年月 FROM articles; -- 提取季度信息 SELECT CONCAT(YEAR(sale_date), 'Q', QUARTER(sale_date)) AS 销售季度 FROM sales_records;
性能优化建议
-
避免在WHERE条件中对字段使用函数,这会导致索引失效:
-- 不推荐(索引失效): SELECT * FROM orders WHERE YEAR(order_date) = 2023; -- 推荐(可以使用索引): SELECT * FROM orders WHERE order_date >= '2023-01-01' AND order_date < '2024-01-01';
-
考虑使用虚拟列或预处理,对频繁截取的时间部分建立索引。
-
对于复杂的时间处理,可以先将结果存储在临时变量或临时表中。
函数选择指南
- 需要自定义格式输出时,选择
DATE_FORMAT() - 需要标准化提取时间单元时,选择
EXTRACT() - **只需获取简单年月日
未经允许不得转载! 作者:HTML前端知识网,转载或复制请以超链接形式并注明出处HTML前端知识网。
原文地址:https://www.html4.cn/13971.html发布于:2026-08-31





