আমার timestamp without time zone default now()
একটি পোস্টগ্রিজ এসকিউএল ডাটাবেস টাইপ সহ একটি "কলাম তৈরি" হয়েছে ।
যদি আমি কলমগুলি নির্বাচন করি তবে এর ডিফল্ট হিসাবে একটি দুর্দান্ত এবং পঠনযোগ্য ফর্ম্যাট রয়েছে:
SELECT created FROM mytable;
created
---------------------------
2011-05-17 10:40:28.876944
তবে আমি কেবল মিলিসেকেন্ডে (দীর্ঘ হিসাবে) টাইমস্ট্যাম্পটি পেতে চাই। এটার মতো কিছু:
Mytable থেকে মাইফর্ম্যাট (তৈরি) নির্বাচন করুন;
created
-----------------
2432432343876944
পোস্টগ্রিএসকিউএল থেকে আমি কীভাবে টাইমস্ট্যাম্প কলামটি পেতে পারি?
জ্যাকের প্রতিক্রিয়া:
আমি আপনার (-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