Encuentre la diferencia entre las marcas de tiempo en segundos en PostgreSQL

127

Tengo una tabla PostgreSQL 8.3con 2 timestampcolumnas. Me gustaría obtener la diferencia entre estos timestampsen segundos. ¿Podría ayudarme a hacer esto?

TableA
(
  timestamp_A timestamp,
  timestamp_B timestamp
)

Necesito obtener algo como (timestamo_B - timestamp_A)en segundos (no solo la diferencia entre segundos, debe incluir horas, minutos, etc.) .

Arun
fuente

Respuestas:

239

Tratar: 

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

Detalles aquí: EXTRACTO .

Igor Romanchenko
fuente
3
Muchas gracias por la respuesta. Funcionó !!! En la consulta anterior, nos falta un paréntesis de cierre. Pero lo he descubierto. Muchas gracias por tu rápida respuesta.
Arun
30
select age(timestamp_A, timestamp_B)

Respondiendo al comentario de 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
fuente
No hará el trabajo. Lo hará Subtract arguments, producing a "symbolic" result that uses years and months. No dará la diferencia en segundos.
Igor Romanchenko
@Igor Actualizado con los resultados incluidos los segundos. El OP quiere no solo segundos, sino también minutos, horas, etc.
Clodoaldo Neto
5
Si lo entendí correctamente, quiere to get the difference between these timestamps in seconds. Y it should include hours, minutes etcsignifica que debe ser la diferencia completa como 10:25:30 - 10:15:25 = 605 seconds. Mi conjetura - que utilizó EXTRACT(SECONDS FROM ...)y se puso10:25:30 - 10:15:25 = 5 seconds
Igor Romanchenko
1
@Igor No está muy claro pero ahora que lo dices creo que probablemente tengas razón.
Clodoaldo Neto
@Clodoaldo: Necesito el resultado mencionado por Igor. Necesito la diferencia completa en segundos.
Arun
0
SELECT (cast(timestamp_1 as bigint) - cast(timestamp_2 as bigint)) FROM table;

En caso de que alguien tenga algún problema con el uso de extract .

tausif
fuente
Tampoco funciona con marcas de tiempo con zonas horarias.
Rodolfo