Microsoft SQL Server Management Studio中昨天的动态语句

时间:2015-02-05 16:14:58

标签: sql-server-2008-r2

我运行以下查询以检查前一天是否运行了某些内容。以下查询有效,但我必须每天更改日期以获得我想要的结果。我已经尝试过多次我发现的东西,好像 返回结果,但它们似乎无法正常工作。

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

所以我的问题是,如何为昨天制作动态声明并且不必每天更改日期?

1 个答案:

答案 0 :(得分:1)

您可以使用dateaddgetdate功能。

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