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

पोस्टग्रेज़ में, क्या आप टाइमस्टैम्प के लिए डिफ़ॉल्ट स्वरूपण सेट कर सकते हैं, सत्र या विश्व स्तर पर?

PostgreSQL में, टाइमस्टैम्प का स्वरूपण भंडारण से स्वतंत्र है। एक उत्तर to_char . का उपयोग करना है और टाइमस्टैम्प को उस समय प्रारूपित करें जिसकी आपको आवश्यकता है, जिस समय आपको इसकी आवश्यकता है, इस तरह:

select to_char(current_timestamp, 'yyyy-MM-dd HH24:MI:SS.MS');

select to_timestamp('2012-10-11 12:13:14.123', 
     'yyyy-MM-dd HH24:MI:SS.MS')::timestamp;

लेकिन अगर आपको डिफ़ॉल्ट स्वरूपण सेट करना होगा:

postgresql टाइमस्टैम्प प्रारूप को विश्व स्तर पर बदलें:

अपने समय क्षेत्र पर एक नज़र डालें, इसे एक sql क्वेरी के रूप में चलाएँ:

show timezone
Result: "US/Eastern"

इसलिए जब आप current_timestamp प्रिंट कर रहे होते हैं, तो आपको यह दिखाई देता है:

select current_timestamp
Result: 2012-10-23 20:58:35.422282-04

-04 अंत में यूटीसी के सापेक्ष आपका समय क्षेत्र है। आप इसके साथ अपना समय क्षेत्र बदल सकते हैं:

set timezone = 'US/Pacific'

फिर:

select current_timestamp
Result: 2012-10-23 18:00:38.773296-07

तो ध्यान दें -07 वहां, इसका मतलब है कि हम प्रशांत यूटीसी से 7 घंटे दूर हैं। मैं उस भद्दे टाइमज़ोन को कैसे दूर करूँ? एक तरीका सिर्फ एक टेबल बनाना है, यह बिना टाइमज़ोन के टाइमस्टैम्प पर डिफॉल्ट हो जाता है:

CREATE TABLE worse_than_fail_table
(
    mykey          INT unique not null,
    fail_date      TIMESTAMP not null
);

फिर यदि आप उस तालिका में टाइमस्टैम्प जोड़ते हैं और उसमें से चुनते हैं

select fail_date from worse_than_fail_table
Result: 2012-10-23 21:09:39.335146

हाँ, अंत में कोई समयक्षेत्र नहीं है। लेकिन आप इस पर अधिक नियंत्रण चाहते हैं कि टाइमस्टैम्प डिफ़ॉल्ट रूप से कैसे दिखाई देता है! आप ऐसा कुछ कर सकते हैं:

CREATE TABLE moo (
    key     int PRIMARY KEY,
    boo     text NOT NULL DEFAULT TO_CHAR(CURRENT_TIMESTAMP,'YYYYMM')
);

यह एक टेक्स्ट फ़ील्ड है जो आपको इस पर अधिक नियंत्रण देता है कि यह डिफ़ॉल्ट रूप से कैसे दिखाई देता है जब आप select somecolumns from sometable . ध्यान दें कि आप टाइमस्टैम्प पर एक स्ट्रिंग कास्ट कर सकते हैं:

select '2012-10-11 12:13:14.56789'::timestamp
Result: 2012-10-11 12:13:14.56789

आप timestamp . पर current_timestamp डाल सकते हैं जो समय क्षेत्र को हटाता है:

select current_timestamp::timestamp
Result: 2012-10-23 21:18:05.107047

आप इस तरह समय क्षेत्र से छुटकारा पा सकते हैं:

select current_timestamp at time zone 'UTC'
Result: "2012-10-24 01:40:10.543251"

लेकिन अगर आप वास्तव में समय क्षेत्र वापस चाहते हैं तो आप यह कर सकते हैं:

select current_timestamp::timestamp with time zone
Result: 2012-10-23 21:20:21.256478-04

आप एक्सट्रेक्ट के साथ जो चाहें निकाल सकते हैं:

SELECT EXTRACT(HOUR FROM TIMESTAMP '2001-02-16 20:38:40');
Result: 20

और यह राक्षसी:

SELECT TIMESTAMP WITH TIME ZONE '2001-02-16 20:38:40-05' AT TIME ZONE 'EST';
Result: 2001-02-16 20:38:40


  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. रेल 4 क्वेरी की तरह - ActiveRecord उद्धरण जोड़ता है

  3. PostgreSQL तार्किक प्रतिकृति Gotchas

  4. कैसे PostgreSQL का उपयोग कर तालिका नाम से स्तंभ विशेषताएँ क्वेरी प्राप्त करने के लिए?

  5. Django ORM में postgresql विंडो फ़ंक्शंस का उपयोग करने का साफ तरीका?