当我在SQL-Server 2008中运行此代码时,
select case when '6/1/2012' < '6/1/2012' then 1 else 0 end
Run Code Online (Sandbox Code Playgroud)
我得到0.
如果我跑,
select case when '6/1/2012 0:00:00.000' < '6/1/2012' then 1 else 0 end
Run Code Online (Sandbox Code Playgroud)
我也得到0.
但是,如果我跑
select case when '6/1/2012' < '6/1/2012 0:00:00.000' then 1 else 0 end
Run Code Online (Sandbox Code Playgroud)
我得到1.
为什么是这样?
Rei*_*ica 12
我的猜测是:
您可能希望您的数据库自动检测日期,但这将涉及解析您提供的每个字符串,以防它是一个日期,这会损害性能并且也可能令人困惑(如果某些内容转换为日期而您并不意味着因为它).
您必须将它们转换为datetime将它们作为datetime值进行比较.返回0:
select case when cast('6/1/2012' as datetime) < cast('6/1/2012 0:00:00.000' as datetime) then 1 else 0 end
Run Code Online (Sandbox Code Playgroud)