sql >> Database >  >> RDS >> PostgreSQL

Een tijdstempel krijgen van aaneengeschakelde dag- en tijdkolommen

date en time soorten

Als uw Day is van het type date en je Time is van het type time , is er een heel eenvoudige oplossing:

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

Je kunt gewoon date toevoegen en time om een ​​timestamp [without time zone] . te krijgen (die wordt geïnterpreteerd volgens de tijdzone-instelling van uw sessie).

En strikt genomen is het extraheren van het tijdperk niet per se gerelateerd aan uw vraag.
date + time resulteren in een timestamp , dat is het.

Tekenreekstypen

Als je het hebt over letterlijke tekenreeksen of text / varchar kolommen, gebruik:

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

of

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

Uw formulier doet niet werk

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

Dit zou werken:

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

Ik citeer de handleiding over typecasts :

Vetgedrukte nadruk van mij.
De essentie:gebruik liever een van de eerste twee syntaxisvarianten.



  1. Dynamische vervolgkeuzelijstwaarde uit database

  2. (poor man's) implementatie van productaanbevelingen

  3. MySQL VERWIJDEREN UIT met subquery als voorwaarde

  4. BoneCP correct gebruik