我试图在18:00:00的时间到达昨天的日期。
我试过这个:
DECLARE @YesturdayDate datetime = DATEADD(D, 0, DATEDIFF(D, 0, GETDATE()-1));
select dateadd(h,18,@YesturdayDate)
但运行select语句时出现错误:
“必须声明标量变量”@YesturdayDate“。”
为什么会这样?
感谢。
答案 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}}命令)