9.5 के पोस्टग्रैज में, मैं वर्ष 0001
(कोई वर्ष शून्य 0000
) के साथ प्रयोग करते समय नीचे देखे गए परिणाम को देखकर आश्चर्यचकित था ।
की शुरुआत -07:52:58
?
कुछ उदाहरण कोड। ध्यान दें कि मैंने TIMESTAMP WITH TIME ZONE
और का मिश्रित उपयोग किया है TIMESTAMP WITHOUT TIME ZONE
, इसलिए ध्यान से पढ़ें।
SET TIME ZONE 'America/Los_Angeles' ;
SELECT (TIMESTAMP WITH TIME ZONE '2015-01-01 00:00:00.0',
TIMESTAMP WITH TIME ZONE '0001-01-01 00:00:00.0Z',
TIMESTAMP WITHOUT TIME ZONE '0001-01-01 00:00:00.0Z') ;
("2015-01-01 00:00:00-08","0001-12-31 16:07:02-07:52:58 BC","0001-01-01 00:00:00")
मैं उस दूसरे मूल्य से हैरान हूं 0001-12-31 16:07:02-07:52:58 BC
:। मैं समझता हूं कि हमें आठ घंटे पीछे की ओर जाना चाहिए, क्योंकि America/Los_Angeles
ऑफसेट से यूटीसी आठ घंटे पीछे है -08:00
। लेकिन इसके बजाय -08:00
ऑफसेट है -07:52:58
। क्यों?
UTC के तहत कोई समस्या नहीं
UTC के तहत डेटा दर्ज करते समय ऐसा कोई मुद्दा नहीं है।
SET TIME ZONE 'UTC' ;
SELECT (TIMESTAMP WITH TIME ZONE '2015-01-01 00:00:00.0',
TIMESTAMP WITH TIME ZONE '0001-01-01 00:00:00.0Z',
TIMESTAMP WITHOUT TIME ZONE '0001-01-01 00:00:00.0Z');
("2015-01-01 00:00:00+00","0001-01-01 00:00:00+00","0001-01-01 00:00:00")
नो ईयर जीरो
वैसे, तारीख का हिस्सा सही लग रहा है। ऐसा लगता है कि कोई वर्ष नहीं है 0000
, कि "BC" और "AD" युगों के बीच धुरी बिंदु है। वर्ष का पहला पल 0001 लें, एक घंटा घटाएं, और आप वर्ष प्राप्त करें 0001 BC
- इसलिए कोई वर्ष शून्य नहीं है।
SET TIME ZONE 'UTC' ;
INSERT INTO moment_ -- TIMESTAMP WITH TIME ZONE.
VALUES ( TIMESTAMP '0001-01-01 00:00:00.0Z' - INTERVAL '1 hour' ) ;
SET TIME ZONE 'UTC' ;
TABLE moment_ ;
परिणाम साल है 0001 BC
तो हम से कूद, 0001
करने के लिए 0001 BC
; कोई वर्ष शून्य नहीं 0000
।
"0001-12-31 23:00:00+00 BC"
0000
एक वैध वर्ष के मूल्य के रूप में दोनों का समर्थन करता है, लेकिन इसका उपयोग करने या न करने पर जोर देता है। )। यह सच है कि PostgreSQL बिना किसी वर्ष 0 के फॉर्म का उपयोग करता है, लेकिन आप यह नहीं बता सकते हैं कि "वर्ष 1 शुरू करें, 0 नहीं" जैसा कि इसके कुछ सार्वभौमिक तथ्य हैं। उदाहरण के लिए उनके बीच अनुवाद करना आसान है जैसे कि खगोलीय डेटा। (तीसरी सहस्राब्दी अभी भी 2001 में या तो शुरू हुई, क्योंकि यह 1 सहस्राब्दी के बाद तीसरी सहस्राब्दी बनी रही)