添加18小时getdate()结果

时间:2013-01-30 09:52:32

标签: sql datetime scalar

我试图在18:00:00的时间到达昨天的日期。

我试过这个:

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

select dateadd(h,18,@YesturdayDate)

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

“必须声明标量变量”@YesturdayDate“。”

为什么会这样?

感谢。

2 个答案:

答案 0 :(得分: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...

答案 1 :(得分:0)

您可以使用一个DATEADD / DATEDIFF对进行此操作:

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

这利用了两个常量日期时间值之间的关系。它“将2001年1月2日至现在的所有天数加至2001年1月1日的18:00”。这与“昨天给我18:00”相同。


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