ฉันมีคอลัมน์ "สร้าง" พร้อมพิมพ์timestamp without time zone default now()
ในฐานข้อมูล PostgreSQL
ถ้าฉันเลือก colums มันมีรูปแบบที่ดีและอ่านได้ตามค่าเริ่มต้น:
SELECT created FROM mytable;
created
---------------------------
2011-05-17 10:40:28.876944
แต่ฉันต้องการได้รับการประทับเวลาในมิลลิวินาทีเท่านั้น (นาน) บางสิ่งเช่นนี้
SELECT 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