PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

सबसे पुराना टाइमस्टैम्प PostgreSQL में समर्थित है

मैनुअल मान बताता है के रूप में:

  • निम्न मान:4713 ईसा पूर्व
  • उच्च मूल्य:294276 ईस्वी

चेतावनी के साथ, जैसा कि क्रिस ने कहा, कि -infinity भी समर्थित है।

देखें नोट बाद में मैनुअल में उसी पृष्ठ पर; उपरोक्त केवल तभी सत्य है जब आप पूर्णांक टाइमस्टैम्प . का उपयोग कर रहे हैं , जो PostgreSQL के सभी अस्पष्ट हाल के संस्करणों में डिफ़ॉल्ट हैं। यदि संदेह है:

SHOW integer_datetimes;

मै तुम्हे बताऊंगा। यदि आप इसके बजाय फ़्लोटिंग पॉइंट डेटाटाइम का उपयोग कर रहे हैं, तो आपको अधिक रेंज और कम (गैर-रैखिक) परिशुद्धता मिलती है। कम से कम प्रोग्रामेटिक रूप से काम करने के किसी भी प्रयास को उस प्रतिबंध का सामना करना होगा।

PostgreSQL आपको न्यूनतम संभव टाइमस्टैम्प प्राप्त करने के लिए केवल एक टाइमस्टैम्प पर शून्य डालने की अनुमति नहीं देता है, और न ही यदि आप फ़्लोटिंग पॉइंट डेटाटाइम्स का उपयोग कर रहे हैं तो यह अधिक समझ में आता है। आप कर सकते हैं जूलियन दिनांक रूपांतरण फ़ंक्शन का उपयोग करें, लेकिन यह आपको युग . देता है नहीं न्यूनतम समय :

postgres=> select to_timestamp(0);
      to_timestamp      
------------------------
 1970-01-01 08:00:00+08
(1 row)

क्योंकि यह नकारात्मक मूल्यों को स्वीकार करता है। आपको लगता है कि इसे नकारात्मक मैक्सिंट देना काम करेगा, लेकिन परिणाम उस बिंदु पर आश्चर्यजनक हैं जहां मुझे आश्चर्य है कि क्या हमारे पास यहां एक रैप-अराउंड बग छिपा हुआ है:

postgres=> select to_timestamp(-922337203685477);
          to_timestamp           
---------------------------------
 294247-01-10 12:00:54.775808+08
(1 row)

postgres=> select to_timestamp(-92233720368547);
          to_timestamp           
---------------------------------
 294247-01-10 12:00:54.775808+08
(1 row)

postgres=> select to_timestamp(-9223372036854);
         to_timestamp         
------------------------------
 294247-01-10 12:00:55.552+08
(1 row)

postgres=> select to_timestamp(-922337203685);
ERROR:  timestamp out of range
postgres=> select to_timestamp(-92233720368);
          to_timestamp           
---------------------------------
 0954-03-26 09:50:36+07:43:24 BC
(1 row)

postgres=> select to_timestamp(-9223372036);
         to_timestamp         
------------------------------
 1677-09-21 07:56:08+07:43:24
(1 row)

(शायद इस तथ्य से संबंधित है कि to_timestamp एक डबल लेता है, भले ही टाइमस्टैम्प को इन दिनों पूर्णांक के रूप में संग्रहीत किया जाता है?)।

मुझे लगता है कि टाइमस्टैम्प रेंज को किसी भी टाइमस्टैम्प पर रहने देना संभवतः सबसे बुद्धिमानी है, जिस पर आपको कोई त्रुटि नहीं मिलती है। आखिरकार, मान्य टाइमस्टैम्प की सीमा निरंतर नहीं है:

postgres=> SELECT TIMESTAMP '2000-02-29';
      timestamp      
---------------------
 2000-02-29 00:00:00
(1 row)

postgres=> SELECT TIMESTAMP '2001-02-29';
ERROR:  date/time field value out of range: "2001-02-29"
LINE 1: SELECT TIMESTAMP '2001-02-29';

इसलिए आप यह नहीं मान सकते कि सिर्फ इसलिए कि मान दो मान्य टाइमस्टैम्प के बीच है, यह स्वयं मान्य है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL नामकरण सम्मेलन

  2. PGAdmin:सर्वर से कनेक्ट नहीं है या सर्वर से कनेक्शन बंद कर दिया गया है

  3. PostgreSQL के साथ जगह में अपडेट

  4. Django विकास डेटाबेस को डिफ़ॉल्ट SQLite से PostgreSQL में बदलना

  5. PostgreSQL किस समयक्षेत्र की जानकारी संग्रहीत करता है?