我正在尝试一些非常简单的事情:将所有昨天的记录都记录在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())
这应该与昨天的硬编码日期相同。对吗?
答案 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