将 18 小时添加到 getdate() 结果



我正在尝试在 18:00:00 时间获取昨天的日期。

我试过这个:

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

但是我在运行 select 语句时收到错误:

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

为什么?

谢谢。

你使用的是哪个版本的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...

您可以使用

单个DATEADD/DATEDIFF对来做到这一点:

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

这利用了两个常量日期时间值之间的关系。它是"将 2001 年 1 月 2 日到现在到 2001 年 1 月 1 日 18:00 经过的整数添加"。这与"昨天给我18:00"相同。


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

相关内容

  • 没有找到相关文章

最新更新