J'ai une colonne "créée" avec du type timestamp without time zone default now()
dans une base de données PostgreSQL.
Si je sélectionne des colonnes, il a un format agréable et lisible par défaut:
SELECT created FROM mytable;
created
---------------------------
2011-05-17 10:40:28.876944
Mais je voudrais obtenir l'horodatage en seulement quelques millisecondes (en long). Quelque chose comme ça:
SELECT myformat (créé) FROM mytable;
created
-----------------
2432432343876944
Comment puis-je obtenir la colonne d'horodatage en quelques millisecondes à partir de PostgreSQL?
Réponse à Jack:
J'obtiens la même différence que vous (-3600), mais si j'utilise timestamp with time zone
je peux voir que l '"erreur" ou la différence est parce que' 1970-01-01 'obtient le fuseau horaire +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)
La différence est-elle un bug? Je suis peut-être à cause de "l'heure d'été" en ce moment?
Également intéressant lors de l'utilisation to_timestamp()
pour insérer les horodatages 0 et 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