获取昨天的数据是行不通的

时间:2018-02-22 19:15:53

标签: sql sql-server tsql

我正在尝试一些非常简单的事情:将所有昨天的记录都记录在SomeDATE列中。

首先,我试过这个:

Declare @StartDate  Date = DateAdd(dd, -1, GetDate())

...然后将其放在WHERE子句中:

Where SomeDATE = @StartDate

我没有回复记录。

[今天是2018-02-22 ]:

如果我使用

Where SomeDATE = '2018-02-21'

我得到了昨天所需的记录。

我也试过这个:

Declare @StartDate  Date = DateAdd(dd, -2, GetDate())
Declare @EndDate    Date = GetDate()

并在where子句中:

Where (SomeDATE > @StartDate And SomeDATE < @EndDate)

再次 - 没有结果。

我错过了一些非常基本的东西吗?

我的意思是能够做到这一点:

Where SomeDATE = DateAdd(dd, -1, GetDate())

这应该与昨天的硬编码日期相同。对吗?

2 个答案:

答案 0 :(得分:0)

在我发布问题之后,我在where子句中尝试了这个:

Where SomeDATE = Cast(DATEADD(dd, -1, GetDate()) As Date)

这是有效的。我不明白为什么它适用于Cast()。

@Patrick:SomeDATE col位于查询中的表变量中,并由[我]定义为&#39; Date&#39;。我有一种感觉,它与您关于数据类型不完全匹配的建议有关。感谢您的帮助!

答案 1 :(得分:0)

GetDate()返回DATETIME类型的值,@ StartDate类型为Date,因此必须将返回值强制转换为日期:

Declare @StartDate  Date = cast(DateAdd(dd, -2, GetDate()), as date)
Declare @EndDate    Date = cast(GetDate() as date)

Where SomeDATE = @StartDate