sql server datetime where子句

问题描述:

对不起,懒惰的问题。我想知道SQL Server 2005的语法为sql server datetime where子句

SELECT * 
    FROM myTable 
WHERE myDateTimeField > "4am this morning" 

在此先感谢您的帮助。

用途:

SELECT * 
    FROM myTable 
WHERE myDateTimeField > DATEADD(hh, 4, DATEADD(dd, DATEDIFF(dd,0,GETDATE()), 0)) 

此:

DATEADD(dd, DATEDIFF(dd,0,getdate()), 0) 

...将在当天午夜返回DATETIME。所以外面的DATEADD在午夜的那个时间增加了四个小时,在今天凌晨4点给你一个DATETIME。

参考:

尝试

SELECT * FROM myTable 
WHERE myDateTimeField > 
     DateAdd(hour, 4, DateAdd(day, DateDiff(day, 0, getdate()), 0)) 
+0

@omg,您快速 – 2010-12-08 02:18:21

而只是为了是不同的,并且可以说是较短的/更易读比其它产品:

SELECT * 
    FROM myTable 
WHERE myDateTimeField > 
     cast(convert(varchar, getdate(), 101) + ' 4AM' as datetime) 

当然,你可能并不是真的想要对4AM进行硬编码,但是如果你这样做,这种方式在传达你的意图方面是非常明显的。

+0

FYI:日期截断的最快方法SQL Server将使用DATEADD/DATEDIFF方法。 – 2010-12-08 02:31:43