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

SQL Server中<=日期查询无法包含最后日期的问题咨询

问题解析与解决方案

你遇到的问题核心原因是你的DateTime字段包含具体时间部分,而你输入的日期条件未指定时间,数据库会自动将其解析为「该日期的00:00:00时刻」,导致范围判断不符合预期:

  • 当使用DateTime <= '2024-04-30'时,实际等价于DateTime <= '2024-04-30 00:00:00',这会过滤掉4月30日当天所有时间晚于0点的数据,自然查不到4月30日的记录。
  • 而DateTime < '2024-04-30'等价于DateTime < '2024-04-30 00:00:00',只会匹配4月29日及更早的数据,所以两种写法都只能查到4月29日的内容。
  • 改用DateTime < '2024-05-01'时,等价于DateTime < '2024-05-01 00:00:00',这个范围覆盖了4月30日全天的所有时间点(从00:00:00到23:59:59.999...),因此能正常查询到4月30日的数据。
  • 同理,<= '2024-05-01'等价于<= '2024-05-01 00:00:00',只能匹配到5月1日0点整及之前的数据,5月1日当天其他时间的记录会被过滤,所以只能查到4月30日的内容。

正确的查询写法

推荐两种可靠的方式来避免这类问题:

  1. 使用「小于下月第一天」的范围判断(最稳妥,无需考虑时间精度):
WHERE DateTime >= '2024-04-01' AND DateTime < '2024-05-01'
  1. 明确指定日期的结束时刻(注意匹配数据库的时间精度,比如支持毫秒的数据库需加上.999):
WHERE DateTime >= '2024-04-01 00:00:00' AND DateTime <= '2024-04-30 23:59:59.999'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 00:04:56