一位老员工留下了我一直在调试的大量查询,看来问题出在SQL Server本身确定比较的方式与我期望的不同。
我有一个表,其中的列col1
包含该值20191215
作为日期时间。
所涉及的零件类似于以下内容:
select case when col1 > '01/01/2020' then 1 else 0 end
此语句正在返回1
,表明该语句'12/15/2019'
大于'01/01/2020'
。
我不需要进行更正查询的帮助,因为除了使用前雇员进行的比较之外,我已经进行了其他更改,我只是好奇为什么SQL Server会像我描述的那样对此进行评估。
我知道这不是SQL Server也会存储日期的通常方式,问题仅仅是日期的格式吗?
当前的SQL Server版本是:SQL Server 2014 SP3 CU3
。
请注意,该链接不包含我的案例的精确副本
编辑:包括与实际查询有关的其他信息。
这是字符串比较而不是日期比较:
select case when '12/15/2019' > '01/01/2020' then 1 else 0 end
vs
select case when CAST('12/15/2019' AS DATE) > CAST('01/01/2020' AS DATE) then 1 else 0 end
我只是好奇为什么SQL Server会像我描述的那样对此进行评估。
'12/15/2019'
它是一个字符串文字,SQL Server不知道您要处理日期,除非您明确表达了自己的意图。
我有一个表,其中列col1包含值20191216
如果要与列进行比较,则列的数据类型和数据类型优先规则很重要
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句