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