我想从表Log
中选择所有记录,其中DateAndTime
字段值(类型为datetime
)用于今天的前一天,无论今天是哪一天。
因此,如果今天是2011-06-08,我想选择DateAndTime
大于或等于2011-06-07 00:00:00
且还小于2011-06-08 00:00:00
的所有行。
我猜这里潜在的陷阱是它在每月的第一天的行为,因为显然2011-06-00
这样的日期是无效的,应该是2011-05-31
。
最佳答案
对于SQL Server 2008,您可以使用它。
select *
from [log]
where cast(DateAndTime as date) = cast(getdate()-1 as date)
2008年之前,您可以使用此
select *
from [log]
where DateAndTime >= dateadd(d, datediff(d, 0, getdate())-1, 0) and
DateAndTime < dateadd(d, datediff(d, 0, getdate()), 0)
与DBA相关:Cast to date is sargable but is it a good idea?
关于sql - TSQL SELECT先前日期的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6279440/