timestamp without time zone default now()
Bir PostgreSQL veritabanında türüyle "oluşturulan" bir sütuna sahibim .
Sütunları seçersem, varsayılan başına hoş ve okunabilir bir biçime sahiptir:
SELECT created FROM mytable;
created
---------------------------
2011-05-17 10:40:28.876944
Ancak zaman damgasını sadece milisaniye cinsinden (Uzun Süren) almak istiyorum. Bunun gibi bir şey:
SELECT myformat (oluşturulan) from mytable;
created
-----------------
2432432343876944
Zaman damgası sütununu PostgreSQL'den yalnızca milisaniye cinsinden nasıl alabilirim?
Jack'e verilen cevap:
Sizinle aynı farkı görüyorum (-3600), fakat kullanırsam timestamp with time zone
"hata" ya da farkın '1970-01-01' zaman dilimi almasından kaynaklandığını görebiliyorum +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)
Fark bir hata mıdır? Şu anda "Gün ışığından yararlanma saati" nedeniyle olabilir?
Ayrıca to_timestamp()
0 ve 1 zaman damgası eklemek için kullanılırken ilginç .
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