Trouver la différence entre les horodatages en secondes dans PostgreSQL


127

J'ai une table PostgreSQL 8.3avec 2 timestampcolonnes. J'aimerais connaître la différence entre ces derniers timestampsen quelques secondes. Pourriez-vous s'il vous plaît m'aider comment y parvenir?

TableA
(
  timestamp_A timestamp,
  timestamp_B timestamp
)

J'ai besoin d'obtenir quelque chose comme (timestamo_B - timestamp_A)en secondes (pas seulement la différence entre les secondes, cela devrait inclure les heures, les minutes, etc.) .

Réponses:


239

Essayer: 

SELECT EXTRACT(EPOCH FROM (timestamp_B - timestamp_A))
FROM TableA

Détails ici: EXTRAIT .


3
Merci beaucoup pour la réponse. Ça a marché !!! Dans la requête ci-dessus, il nous manque une parenthèse fermante. Mais je l'ai compris. Merci beaucoup pour votre réponse rapide.
Arun

30
select age(timestamp_A, timestamp_B)

En réponse au commentaire d'Igor:

select age('2013-02-28 11:01:28'::timestamp, '2011-12-31 11:00'::timestamp);
              age              
-------------------------------
 1 year 1 mon 28 days 00:01:28

Cela ne fera pas le travail. Ça le fera Subtract arguments, producing a "symbolic" result that uses years and months. Cela ne donnera pas la différence en secondes.
Igor Romanchenko

@Igor Mis à jour avec les résultats, y compris les secondes. L'OP veut non seulement des secondes mais aussi des minutes, des heures, etc.
Clodoaldo Neto

5
Si je l'ai bien compris, il veut to get the difference between these timestamps in seconds. Et it should include hours, minutes etccela signifie que ce doit être toute la différence comme 10:25:30 - 10:15:25 = 605 seconds. Ma conjecture - il a utilisé EXTRACT(SECONDS FROM ...)et obtenu10:25:30 - 10:15:25 = 5 seconds
Igor Romanchenko

1
@Igor Ce n'est pas très clair mais maintenant que tu le dis je pense que tu as probablement raison.
Clodoaldo Neto

@Clodoaldo: J'ai besoin de la sortie mentionnée par Igor. J'ai besoin de toute la différence en quelques secondes.
Arun

0
SELECT (cast(timestamp_1 as bigint) - cast(timestamp_2 as bigint)) FROM table;

Dans le cas où quelqu'un a un problème en utilisant extrait .


Cela ne fonctionne pas non plus avec l'horodatage avec les fuseaux horaires.
Rodolfo le
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.