You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么SQL中匹配日期时=不生效,用<和>反而能提取到相同日期数据

问题原因说明

1. 等号匹配失效的核心原因

你表中的created_at字段是带时分秒的日期时间类型(如DATETIME、TIMESTAMP),而非纯日期(DATE)类型。
当执行created_at = '2021-10-14'时,数据库会自动将字符串'2021-10-14'补全为'2021-10-14 00:00:00'再做等值匹配。你的业务数据中created_at都带有具体时间(例如2021-10-14 14:23:05),只有刚好在10月14日0点整创建的数据才会命中,没有这类数据就会返回0行结果。

2. 范围查询生效的原因

范围条件created_at > '2021-10-14' and created_at < '2021-10-15'会被数据库转换为完整的时间区间:

  • 下界:大于2021-10-14 00:00:00
  • 上界:小于2021-10-15 00:00:00
    这个区间刚好覆盖了2021年10月14日全天所有带时分秒的时间点,所以能正常匹配到所有当天创建的客户数据。

补充:其他等价的查询写法

  • 若created_at字段没有索引,可以直接转纯日期匹配:
    select * from customers where date(created_at) = '2021-10-14'
  • 若要兼容毫秒级时间,优先使用你原本的开区间范围查询,避免between语法漏掉23:59:59.xxx的高精度时间数据。

内容的提问来源于stack exchange,提问作者Ascharya SF

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 08:06:02