我运行以下查询以检查前一天是否运行了某些内容。以下查询有效,但我必须每天更改日期以获得我想要的结果。我已经尝试过多次我发现的东西,好像 应 返回结果,但它们似乎无法正常工作。
select * from Linking_Results
where Evaluated between '2015-02-04 00:00:01.001' and '2015-02-04 23:59:00.999'
and Linked = '1' order by Evaluated
所以我的问题是,如何为昨天制作动态声明并且不必每天更改日期?
答案 0 :(得分:1)
您可以使用dateadd
和getdate
功能。
declare @start datetime,
@end datetime
-- subtract one day and cast it as a date to drop the time portion
select @start = cast(dateadd(day, -1, getdate()) as date)
-- add one day and subtract 3ms to get the end of yesterday (apparently SQL rounds)
select @end = dateadd(ms, -3, dateadd(day, 1, @start))
这些值将是
2015-02-04 00:00:00.000
2015-02-04 23:59:59.997
你可以在这两个变量之间做一个。由于您使用包含的between
,因此您需要考虑时间部分。您可以将where子句更改为第二天,并对@end
select @end = dateadd(day, 1, @start)
where Evaluated >= @start and Evaluated < @end