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.) .

Arun
la source

Réponses:

239

Essayer: 

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

Détails ici: EXTRAIT .

Igor Romanchenko
la source
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
Clodoaldo Neto
la source
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 .

tausif
la source
Cela ne fonctionne pas non plus avec l'horodatage avec les fuseaux horaires.
Rodolfo le