sql >> Base de Datos >  >> RDS >> PostgreSQL

Obtenga una marca de tiempo al concatenar columnas de día y hora

date y time tipos

Si tu Day es de tipo date y tu Time es de tipo time , hay una solución muy simple:

SELECT EXTRACT(EPOCH FROM (day + time));

Simplemente puede agregar date y time para obtener una timestamp [without time zone] (que se interpreta de acuerdo con la configuración de la zona horaria de su sesión).

Y, estrictamente hablando, extraer la época no está relacionado con su pregunta per se.
date + time dar como resultado una timestamp , eso es todo.

Tipos de cadena

Si está hablando de literales de cadena o text / varchar columnas, use:

SELECT EXTRACT(EPOCH FROM ('2013-07-18' || ' ' || '21:52:12')::timestamp);

o

SELECT EXTRACT(EPOCH FROM cast('2013-07-18' ||' '|| '21:52:12' AS timestamp));

Su formulario no trabajo

SELECT EXTRACT(EPOCH FROM TIMESTAMP ('2013-07-18' || ' ' || '21:52:12'));

Esto funcionaría:

SELECT EXTRACT(EPOCH FROM "timestamp" ('2013-07-18' || ' ' || '21:52:12'));

Cito el manual sobre conversión de tipos :

El énfasis en negrita es mío.
La esencia de esto:más bien use una de las dos primeras variantes de sintaxis.