मेरे पास timestamp without time zone default now()
PostgreSQL डेटाबेस में टाइप के साथ एक कॉलम "बनाया" है ।
यदि मैं कॉलम्स का चयन करता हूं, तो इसका प्रति डिफ़ॉल्ट एक अच्छा और पठनीय प्रारूप है:
SELECT created FROM mytable;
created
---------------------------
2011-05-17 10:40:28.876944
लेकिन मैं केवल मिलीसेकंड (एक लंबे समय के रूप में) में टाइमस्टैम्प प्राप्त करना चाहूंगा। कुछ इस तरह:
Myformat का चयन करें (निर्मित) mytable से;
created
-----------------
2432432343876944
मैं PostgreSQL से केवल मिलीसेकंड में टाइमस्टैम्प कॉलम कैसे प्राप्त कर सकता हूं?
जैक का जवाब:
मुझे आपके (-3600) के समान अंतर मिलता है, लेकिन अगर मैं उपयोग करता timestamp with time zone
हूं तो मैं देख सकता हूं कि "त्रुटि" या अंतर इसलिए है क्योंकि '1970-01-01' को समय क्षेत्र मिलता है +01
।
create table my_table_2(created timestamp with time zone);
CREATE TABLE
insert into my_table_2 (created) values (now()), ('1970-01-01');
INSERT 0 2
select created, extract(epoch from created) from my_table_2;
created | date_part
-------------------------------+------------------
2011-05-18 11:03:16.909338+02 | 1305709396.90934
1970-01-01 00:00:00+01 | -3600
(2 rows)
क्या अंतर बग है? मैं इस समय "डेलाइट सेविंग टाइम" के कारण हो सकता हूं?
to_timestamp()
टाइमस्टैम्प 0 और 1 डालने के दौरान भी दिलचस्प है ।
insert into my_table_2 (created) values (to_timestamp(0));
INSERT 0 1
insert into my_table_2 (created) values (to_timestamp(1));
INSERT 0 1
select created, extract(epoch from created) from my_table_2;
created | date_part
-------------------------------+------------------
2011-05-18 11:03:16.909338+02 | 1305709396.90934
1970-01-01 00:00:00+01 | -3600
1970-01-01 01:00:00+01 | 0
1970-01-01 01:00:01+01 | 1