首页 > 解决方案 > 尝试在 SQL 中将太平洋时间转换为 UTC,使用 datetime 声明变量时不断出错

问题描述

我正在尝试获得正确的日期结果,但我想获得 UTC 时间,以便我的数据正确。我想使用 UTC 时间获得星期六的正确结果,我应该使用getdate()吗?

这是部分查询:

declare @STARTDATE datetime = '07-03-2021 00:00:01'
declare @ENDDATE datetime = '07-03-2021 23:59:59'

select dateadd(hh, datediff(hh, getutcdate(), getdate()), @STARTDATE) as utc_stardate,dateadd(hh, datediff(hh, getutcdate(), getdate()), @endDATE) as utc_enddate
where repackagingtime between utc_stardate and utc_enddate

错误说:

必须声明标量变量

我如何解决它?

更新:

我没有先声明它,但我应该设置为varchar吗?

像这样?

declare @utc_enddate datetime

但是我申请更改后,每天的数据现在都是空白的

标签: sqlsql-servertsqldatetimeutc

解决方案


将 utc 日期变量声明为 DATE 数据类型

您可以像这样将时区转换为 utc(从 est 转换为 utc)。只需将 getdate() 替换为您的可变日期即可。

DECLARE @UTCSTART DATE

SET @UTCSTART = CONVERT(DATE, GETDATE() AT TIME ZONE 'Eastern Standard Time' AT TIME ZONE 'UTC')

推荐阅读