Date类型orderdate字段使用指定日期格式查询无结果 求助解决方案
问题原因与解决办法
问题根因
你的查询无结果确实是日期格式使用错误导致的,核心问题有两点:
- 你写的
orderdate<07/09/21中日期值没有加引号,SQL会将其识别为除法运算表达式,07/09/21计算后约等于0.037,数值类型和日期类型的orderdate字段无法正常匹配,自然返回空结果。 - 即使补充引号写成
'07/09/21',这种短日期格式的解析规则高度依赖数据库配置,很容易出现日期解析偏差(比如识别为2007年9月21日、2021年7月9日等不同结果),也会导致查询结果不符合预期。
解决办法
你不需要修改表的存储格式,直接使用和orderdate字段存储规则一致的标准日期格式作为查询条件即可:
如果你要筛选2021年7月9日之前的数据,就将条件写为
orderdate < '2021-07-09';如果要筛选2021年9月7日之前的数据,就写为orderdate < '2021-09-07',按照你的实际查询需求调整日期数值即可。
另外注意:你当前的SQL使用了SUM()聚合函数,但查询列中存在多个非聚合字段,需要补充GROUP BY子句否则会执行报错,修正后的完整SQL示例如下:
SELECT stationerytype, txntype, stationeryqtyrecd, stationeryqtyissued, stationeryissueddate, orderdate, SUM(stationeryqtyrecd) as ttlreceived FROM tblstationerystock WHERE ( stationerytype ='A4 White Ream' AND txntype ='received' ) AND orderdate < '2021-07-09' -- 按你实际需要的日期替换即可 GROUP BY stationerytype, txntype, stationeryqtyrecd, stationeryqtyissued, stationeryissueddate, orderdate;
内容的提问来源于stack exchange,提问作者room
相关产品推荐
相关产品推荐

