date
and time
types
If your Day
is of type date
and your Time
is of type time
, there is a very simple solution:
SELECT EXTRACT(EPOCH FROM (day + time));
You can just add date
and time
to get a timestamp [without time zone]
(which is interpreted according to the time zone setting of your session).
And, strictly speaking, extracting the epoch is unrelated to your question per se.
date
+ time
result in a timestamp
, that's it.
String types
If you are talking about string literals or text
/ varchar
columns, use:
SELECT EXTRACT(EPOCH FROM ('2013-07-18' || ' ' || '21:52:12')::timestamp);
or
SELECT EXTRACT(EPOCH FROM cast('2013-07-18' ||' '|| '21:52:12' AS timestamp));
Your form does not work
SELECT EXTRACT(EPOCH FROM TIMESTAMP ('2013-07-18' || ' ' || '21:52:12'));
This would work:
SELECT EXTRACT(EPOCH FROM "timestamp" ('2013-07-18' || ' ' || '21:52:12'));
I quote the manual about type casts:
It is also possible to specify a type cast using a function-like
syntax:
typename ( expression )
However, this only works for types whose names are also valid as
function names. For example, double precision
cannot be used this way,
but the equivalent float8
can. Also, the names interval
, time
, and
timestamp
can only be used in this fashion if they are double-quoted,
because of syntactic conflicts. Therefore, the use of the
function-like cast syntax leads to inconsistencies and should probably
be avoided.
Bold emphasis mine.
The gist of it: rather use one of the first two syntax variants.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…