开发者社区> 问答> 正文

SQL Server是否确定硬编码日期较大?

0

一位老员工留下了我正在调试的大量查询,看来问题出在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。

显示相同结果的SQL Fiddle链接

请注意,该链接不包含我的案例的精确副本

编辑:包含与实际查询有关的其他信息。

展开
收起
祖安文状元 2020-01-04 15:31:43 534 0
1 条回答
写回答
取消 提交回答
  • 这是字符串比较,而不是日期比较:

    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
    
    2020-01-04 15:31:58
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
AnalyticDB基础版:云原生My SQL 敏捷数仓 立即下载
第十二届 BigData NoSQL Meetup — 基于hbase的New sql落地实践 立即下载
时序数据库TSDB的SQL与流计算 立即下载