0

我试图在 18:00:00 时间获得昨天的日期。

我试过这个:

DECLARE @YesturdayDate datetime = DATEADD(D, 0, DATEDIFF(D, 0, GETDATE()-1));

select dateadd(h,18,@YesturdayDate)

但是运行 select 语句时出现错误:

"必须声明标量变量 "@YesturdayDate"。"

这是为什么?

谢谢。

4

2 回答 2

3

您使用的是什么版本的 sql-server?我假设是 2005 年,那么您不能在声明它的同一行中初始化变量。

DECLARE @YesturdayDate datetime;
SET @YesturdayDate = DATEADD(D, 0, DATEDIFF(D, 0, GETDATE()-1));

select dateadd(hh,18,@YesturdayDate);

(你也必须使用dateadd(hh...代替dateadd(h...

于 2013-01-30T09:54:40.150 回答
0

你可以用一个DATEADD/DATEDIFF对来做到这一点:

DATEADD(day,DATEDIFF(day,'20010102',GETDATE()),'2001-01-01T18:00:00')

这利用了两个恒定日期时间值之间的关系。它是“将 2001 年 1 月 2 日到现在的总天数加到 2001 年 1 月 1 日的 18:00”。这与“昨天给我 18:00”相同。


至于您报告的原始错误 - 如果它是唯一GO发生的错误,我唯一能想到的是您的两个语句实际上是分开的批次(通过命令彼此分开)

于 2013-01-30T09:55:41.643 回答