sql >> Databasteknik >  >> RDS >> PostgreSQL

Få en tidsstämpel från sammanlänkande dag- och tidskolumner

date och time typer

Om din Day är av typen date och din Time är av typen time , det finns en mycket enkel lösning:

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

Du kan bara lägga till date och time för att få en timestamp [without time zone] (vilket tolkas enligt tidszonsinställningen för din session).

Och strängt taget är att extrahera epoken inte relaterat till din fråga i sig.
date + time resultera i en timestamp , det är allt.

Strängtyper

Om du pratar om strängliteraler eller text / varchar kolumner, använd:

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

eller

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

Ditt formulär inte arbete

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

Detta skulle fungera:

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

Jag citerar handboken om typavgjutningar :

Djärv betoning min.
Grunken av det:använd hellre en av de två första syntaxvarianterna.



  1. Sammansatt primär nyckel kontra ytterligare ID-kolumn?

  2. Finns det ett knep för att tillåta MySQL att ignorera ett avslutande kommatecken i SET-satsen i en UPDATE-sats?

  3. 7645 Null eller tomt fulltextpredikat

  4. MYSQL:Skillnaden mellan Binary och Blob