贝利信息

如何实现时间范围查询_mysql项目时间字段用法

日期:2026-01-19 00:00 / 作者:P粉602998670
MySQL时间范围查询需选对DATETIME等字段类型,用>=/

在 MySQL 中实现时间范围查询,关键在于正确使用时间类型的字段(如 DATETIMETIMESTAMPDATE)并搭配合适的比较操作符和函数。项目中常见的时间字段如 created_atupdated_atstart_timeend_time,都可直接参与范围筛选。

时间字段类型选对是前提

MySQL 提供多种时间类型,用途不同:

建议项目中统一用 DATETIME,避免隐式转换和时区干扰;建表时加上 DEFAULT CURRENT_TIMESTAMPON UPDATE CURRENT_TIMESTAMP 可自动维护时间。

基础时间范围查询写法

BETWEEN ... AND ... 或组合 >= 即可完成标准区间查询:

SELECT * FROM orders WHERE created_at >= '2025-05-01' AND created_at

注意:推荐用 替代 ,避免因秒级精度或微秒导致漏数据。

SELECT * FROM logs WHERE DATE(created_at) = CURDATE();

但注意:DATE() 函数会使 created_at 索引失效;更优写法是:

WHERE created_at >= CURDATE() AND created_at

按自然周期动态查询(周/月/季度)

借助 MySQL 日期函数可灵活计算边界:

WHERE created_at >= DATE_SUB(CURDATE(), INTERVAL WEEKDAY(CURDATE()) DAY) AND created_at

WHERE created_at >= DATE_FORMAT(DATE_S

UB(CURDATE(), INTERVAL 1 MONTH), '%Y-%m-01') AND created_at

这类写法可嵌入视图或预编译 SQL,便于复用。

索引与性能要点

时间范围查询是否高效,取决于索引是否生效: