AT TIME ZONE이 왜 비 결정적입니까?


18

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.

4
세 단어. 일광 절약 시간.
paparazzo

2
시간으로 알려진 악몽에 오신 것을 환영합니다. 나는 당신이 시간을 저장할 때 그것이 의무적 이었으면 좋겠다. 또한 어떤 시간대도 저장했다. 나는 두통 약을 너무 많이 절약 할 것입니다.
Eric S

방금 'AT TIME ZONE'의 비결 정성을 반영하여 문서를 업데이트하도록 요청 하는 Microsoft Connect 항목을 작성했습니다 .
Ben Gribaudo

답변:


20

AT TIME ZONE 일광 절약 시간을 계산하기 위해 몇 가지 논리사용합니다 . DST 오프셋 값은 변경할 수 없으며 ( Windows 업데이트 를 통해 변경 될 수 있음 ) Windows 레지스트리에 외부에 포함되어 있으므로 AT TIME ZONE외부 데이터에 의존하기 때문에이 기능을 결정할 수 없습니다.

마찬가지로 sys.time_zone_info정적 참조 테이블이 아닌 뷰인 이유 는 최신 시간대 정보가있는 레지스트리 값에 따라 계산해야합니다.


1
그러나 변환되는 날짜를 기준으로 계산해서는 안됩니까? 그것이 비 결정적이라면, 일광 절약이 시작되는 날의 규칙이 2009 년과 마찬가지로 미래에 변경 될 수 있기 때문입니다.
Random832

@ Random832 맞아! 이에 대한 세부 정보를 건너 뛰고 더 명확하게 업데이트했습니다.
LowlyDBA

2
@ Random832, 과거 날짜뿐만 아니라 미래 날짜도 고려하십시오. 미래의 날짜가 현재 존재하는 시간 변경 규칙에 따라 저장되어있는 경우 규칙은, 그때와 지금 사이에 변경하는 경우 값은 무효가됩니다
단 구즈

1
존 : 이것은 좋은 정보이지만, 결정적이지 않은 실제 이유는 단지 레지스트리에서 정보를 얻는 것에 대한 외부 의존성 때문이라고 말하기 위해 이것을 조금 재정렬하는 것이 더 기술적으로 정확하지 않습니까? 물론 앱 코드에 하드 코딩되는 것과 달리 정보를 가져와야하는 이유 (예 : 근본 원인)는 주로 DST 규칙 이 얼마나 자주 변경 되는지 새로운 표준 시간대가 도입 될 수 있다는 사실 때문입니다. 그러나 그것은 정말로 이차적 인 것입니까? 그러나 "이유"와 상관없이 외부 종속성은 모든 기능을 비 결정적이어야합니다.
Solomon Rutzky

1
대박! 참고로, 여기 다소 흥미로운 정보를 발견 - en.wikipedia.org/wiki/Tz_database - 표시 (내가 지금까지 찾을 수 있다는 적어도) 몇 가지 서류 중 하나가 될 것으로 보인다 DST가 유일한 것은 아니라고 바꾸다. 내가보고에서 무엇을 말할 수에서 C : \ WINDOWS \ 세계화 \ 시간대 \ timezones.xml의 파일, 심지어 기본 오프셋은 시간이 지남에 변경할 수 있습니다,하지만 자주 1970 년 이후 같아요. +1 :-) (링크에 나쁜 인물이 있었기 때문에 이것을 다시 게시해야 함)
Solomon Rutzky

1

AT TIME ZONE을 결정 론적 및 비결정론 적 주제의 비결정론 적 목록에 추가하고 AT TIME ZONE 주제에서 추가했습니다. AT TIME ZONE 기능은 비 결정적으로 분류됩니다. 이것을 가져 주셔서 감사합니다. Rick Byham, SQL Server 온라인 설명서.


2
이것은 답변이 아닌 의견이어야합니다!
Kin Shah
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.