SQL Server中无时间比较日期的最佳方法?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (83)
select * from sampleTable 
where CONVERT(VARCHAR(20),DateCreated,101) 
=     CONVERT(VARCHAR(20),CAST('Feb 15 2012  7:00:00:000PM' AS DATETIME),101)

我想比较一下没有时间的日期

以上查询是否可以?

  • 我正在使用SQLServer 2005
  • 在服务器上以UTC格式保存的日期
  • 针对此数据的用户属于不同的时区。
提问于
用户回答回答于

在你的情况下,无需转换回日期时间; 并使用范围允许最有效的比较(特别是如果索引):

declare @when datetime = 'Feb 15 2012  7:00:00:000PM'
declare @min datetime = FLOOR(CAST(@when as float))
declare @max datetime = DATEADD(day, 1, @min)

select * from sampleTable where DateCreated >= @min and DateCreated < @max
用户回答回答于

方法

DECLARE @Date datetime = '04/01/2016 12:01:31'

DECLARE @Date2 datetime = '04/01/2016'

SELECT CAST(@Date as date)

SELECT CASE When (CAST(@Date as date) = CAST(@Date2 as date)) Then 1 Else 0 End

扫码关注云+社区

领取腾讯云代金券