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

使用BETWEEN填充记录:MSSQL日期查询语句失效求助

解决MSSQL中日期范围查询语句的报错问题

嘿,我一眼就发现你这条SQL语句的问题啦!你写的WHERE (BATCHDT '2018.01.01' AND '2018.05.01')缺少了关键的比较运算符,MSSQL根本没法理解你要对BATCHDT和这两个日期做什么判断,这就是语句无法运行的核心原因。

下面分两种情况给你修正后的正确写法:

情况1:BATCHDT是日期类型(DATE/DATETIME等)

如果你的BATCHDT字段本身就是日期类型,直接用范围比较即可:

  • 用BETWEEN(包含起始和结束日期):
SELECT * FROM tableA WHERE BATCHDT BETWEEN '2018.01.01' AND '2018.05.01';
  • 如果你需要排除结束日期当天的数据(比如只到2018.04.30),建议用明确的大于等于和小于:
SELECT * FROM tableA WHERE BATCHDT >= '2018.01.01' AND BATCHDT < '2018.05.02';

情况2:BATCHDT是字符串类型(VARCHAR等)

如果BATCHDT是存储为yyyy.MM.dd格式的字符串,直接用字符串比较可能会出现排序问题(比如字符串"2018.10.01"会被判定为比"2018.05.01"小,这显然不符合日期逻辑),所以最好先转换成日期类型再比较:

SELECT * FROM tableA 
WHERE CONVERT(DATE, BATCHDT, 102) BETWEEN '2018-01-01' AND '2018-05-01';

这里的102是MSSQL中对应yyyy.mm.dd格式的转换代码,能确保字符串被正确解析为日期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:31:00