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

Respuestas:


239

Tratar: 

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

Detalles aquí: EXTRACTO .


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

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 .


Tampoco funciona con marcas de tiempo con zonas horarias.
Rodolfo
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.