हिमपात का एक खंड CONVERT_TIMEZONE बग?

0

सवाल

में हिमपात का एक खंड, परिवर्तित करने के लिए जब कुछ स्थानीय तारीख करने के लिए UTC और फिर वापस करने के लिए स्थानीय समय क्षेत्र का उपयोग कर CONVERT_TIMEZONE समारोह, अंत परिणाम से बंद है एक घंटे. उदाहरण के लिए:

ALTER SESSION SET TIMEZONE = 'Canada/Eastern';
select
cast('1949-04-24' as timestamp) as date_local -- because TIMEZONE = 'Canada/Eastern'
, convert_timezone('Canada/Eastern', 'UTC', '1949-04-24') as date_utc
, convert_timezone('UTC', 'Canada/Eastern', convert_timezone('Canada/Eastern', 'UTC', '1949-04-24')) as date_local1

परिणाम:

DATE_LOCAL DATE_UTC DATE_LOCAL1
1949-04-24 00:00:00.0 1949-04-24 05:00:00.0 1949-04-24 01:00:00.0

मुझे उम्मीद है दोनों DATE_LOCAL और DATE_LOCAL1 किया जा करने के लिए समान है, हालांकि DATE_LOCAL1 एक घंटे की है । यह उम्मीद है? हूँ मैं कुछ याद आ रही है या वहाँ एक बग है में CONVERT_TIMEZONE समारोह?

snowflake-cloud-data-platform
2021-11-23 21:46:09
1

सबसे अच्छा जवाब

3

यह एक बग नहीं है. इस बारे में डेलाइट बचत समय (DST). 1949 में, DST प्रारंभ पर बुधवार, 24 अप्रैल, 00:00. तो जब आप इसे बदलने के लिए यूटीसी, यह हो जाता है 1949-04-24 05:00:00.0. जब आप इसे बदलने वापस, यह हो जाता है 01:00 के कारण डीएसटी, क्योंकि यह समय है कि घड़ियों को आगे कर दिया गया है एक घंटे.

2021-11-23 22:17:52

आप सही कह रहे हैं, धन्यवाद! के रूप में समझाया यहाँ: torontooldnews.wordpress.com/2018/08/14/daylight-savings-time "में 1947, 1948 और 1949 में, किसी कारण के लिए, शहर का फैसला किया निर्धारित करने के लिए अपनी घड़ियों को आगे और पीठ पर आधी रात के बजाय 2 बजे" यह भी देखें: timeanddate.com/time/change/canada/toronto?year=1949 लेकिन नहीं होना चाहिए रूपांतरण करने के लिए UTC दे 1949-04-24 04:00:00 इस मामले में?
Leonard

मेरी समझ के अनुसार, पर 00:00 (पहले DST शुरू कर दिया), चतुर्थ ऑफसेट है UTC-5. तो रूपांतरण देता है 05:00. जब आप परिवर्तित, इसे वापस प्रणाली का उपयोग करता है UTC-4 के रूप में हम जानते हैं कि DST प्रारंभ पर कनाडा/ ।
Gokhan Atil

धन्यवाद स्पष्टीकरण के लिए, @कि gokhan Atil! यह भावना अब बनाता है. 1949-04-24 00:00:00 नहीं है एक मान्य समय (अस्तित्व में नहीं) के बाद से यह हो जाता है 1949-04-24 01:00:00. एक ही लागू होता है के लिए सभी समय के बीच इन दो मूल्यों है । इस प्रकार, CONVERT_TIMEZONE कार्य करता है रूपांतरण सही ढंग से.
Leonard

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में