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.