PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Rufen Sie einen Zeitstempel aus der Verkettung von Tages- und Zeitspalten ab

date und time Typen

Wenn Ihr Day ist vom Typ date und Ihre Time ist vom Typ time , gibt es eine sehr einfache Lösung:

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

Sie können einfach date hinzufügen und time um einen timestamp [without time zone] zu erhalten (die entsprechend der Zeitzoneneinstellung Ihrer Sitzung interpretiert wird).

Und streng genommen hat das Extrahieren der Epoche nichts mit Ihrer Frage an sich zu tun.
date + time ergibt einen timestamp , das war's.

String-Typen

Wenn Sie über String-Literale oder text sprechen / varchar Spalten, verwenden Sie:

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

oder

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

Ihr Formular nicht Arbeit

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

Das würde funktionieren:

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

Ich zitiere das Handbuch zu Typumwandlungen :

Fette Hervorhebung von mir.
Fazit:Verwenden Sie lieber eine der ersten beiden Syntaxvarianten.