Le relevé me donne la date et l'heure.
Comment pourrais-je modifier l'instruction pour qu'elle ne renvoie que la date (et non l'heure) ?
SELECT to_timestamp( TRUNC( CAST( epoch_ms AS bigint ) / 1000 ) );
Le relevé me donne la date et l'heure.
Comment pourrais-je modifier l'instruction pour qu'elle ne renvoie que la date (et non l'heure) ?
SELECT to_timestamp( TRUNC( CAST( epoch_ms AS bigint ) / 1000 ) );
Vous utilisez to_timestamp
puis convertit le timestamp en date
select to_timestamp(epoch_column)::date;
Plus de détails :
/* Current time */
select now(); -- returns timestamp
/* Epoch from current time;
Epoch is number of seconds since 1970-01-01 00:00:00+00 */
select extract(epoch from now());
/* Get back time from epoch */
-- Option 1 - use to_timestamp function
select to_timestamp( extract(epoch from now()));
-- Option 2 - add seconds to 'epoch'
select timestamp with time zone 'epoch'
+ extract(epoch from now()) * interval '1 second';
/* Cast timestamp to date */
-- Based on Option 1
select to_timestamp(extract(epoch from now()))::date;
-- Based on Option 2
select (timestamp with time zone 'epoch'
+ extract(epoch from now()) * interval '1 second')::date;
Dans votre cas :
select to_timestamp(epoch_ms / 1000)::date;
La solution ci-dessus ne fonctionne pas pour la dernière version de PostgreSQL. J'ai trouvé ce moyen de convertir le temps d'époque qui est stocké dans le nombre et le type de colonne int est sur PostgreSQL 13 :
SELECT TIMESTAMP 'epoch' + (<table>.field::int) * INTERVAL '1 second' as started_on from <table>;
Pour une explication plus détaillée, vous pouvez voir ici https://www.yodiw.com/convert-epoch-time-to-timestamp-in-postgresql/#more-214
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.