加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 为什么AT TIME ZONE不确定?

发布时间:2020-12-12 06:19:44 所属栏目:MsSql教程 来源:网络整理
导读:SQL Server 2016的 AT TIME ZONE 似乎是不确定的.但是,我还没有找到正式说明这一点的文件,也没有给出其背后推理的理由. 为什么AT TIME ZONE不确定? 显示非决定论的例子 执行: CREATE TABLE Test ( LegacyTimestamp DATETIME,Timestamp AS LegacyTimestamp A
SQL Server 2016的 AT TIME ZONE似乎是不确定的.但是,我还没有找到正式说明这一点的文件,也没有给出其背后推理的理由.

为什么AT TIME ZONE不确定?

显示非决定论的例子

执行:

CREATE TABLE Test (
    LegacyTimestamp DATETIME,Timestamp AS LegacyTimestamp AT TIME ZONE 'Eastern Standard Time' PERSISTED
);

返回以下错误:

Msg 4936,Level 16,State 1,Line 1
Computed column 'Timestamp' in table 'Test' cannot be persisted because the column is non-deterministic.

解决方法

在TIME ZONE employs some logic计算夏令时. DST偏移值不是不可变的(它们可以通过 windows updates更改)并且包含在Windows注册表的外部,因此AT TIME ZONE功能不能确定,因为它依赖于外部数据.

同样,这就是sys.time_zone_info是视图而不是静态引用表的原因,需要根据具有最新时区信息的注册表值来计算它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读