在 SQL Server 时态表查询中使用“FOR SYSTEM_TIME AS OF ... AT TIME ZONE”出现语法错误

问题描述 投票:0回答:1

作为示例这里

DECLARE @LocalTime DATETIMEOFFSET = '2021-09-01 10:00:00.7230011 -07:00';

SELECT *
FROM [vw_GetOrgChart]
FOR SYSTEM_TIME AS OF @LocalTime AT TIME ZONE 'UTC';

我收到错误:

消息 102,第 15 级,状态 1,第 3 行
“AT”附近的语法不正确

我找不到“AT TIME ZONE”语句的语法详细解释,除了this,有什么想法吗?

SQL Server 版本:Microsoft SQL Server 2019 (RTM-CU23) (KB5030333) - 15.0.4335.1 (X64)

sql-server t-sql sql-server-2019
1个回答
0
投票

文档是错误的。去年添加了有关

AT TIME ZONE
可以使用的不正确信息,但是,没有对 PR 进行尽职调查,这意味着添加了不正确的信息(尽管我认为开源文档很好,它也确实有它的缺陷)。

Randolph West在我提出的PR中证实了这一点:

我最初在去年授权了添加此更改的 PR,并且事先没有进行尽职调查以正确测试它。

WideWorldImporters
数据库上,您可以执行以下操作:

DECLARE @CustomerTimeZone NVARCHAR(128) = 'Central European Standard Time';

SELECT StockItemID, ValidFrom,
    --Assign the known offset only
    ValidFrom AT TIME ZONE 'Pacific Standard Time' AS OrderDate_TimeZonePST,
    --Assign the known offset, then convert to another time zone
    ValidFrom AT TIME ZONE @CustomerTimeZone AS OrderDate_TimeZoneCustomer
FROM Warehouse.StockItems;

但是,你是对的,

AT TIME ZONE
AS OF
不兼容。

我不会直接批准您的 PR(这会完全删除该示例),而是会回滚去年的更改。

© www.soinside.com 2019 - 2024. All rights reserved.