date和time类型
如果您的Dayis 属于 typedate并且您的Timeis of type time,则有一个非常简单的解决方案:
SELECT EXTRACT(EPOCH FROM (day + time));
您可以添加date并time获取一个timestamp [without time zone](根据会话的时区设置进行解释)。
而且,严格来说,提取时代与您的问题本身无关。
date+time结果是 a timestamp,就是这样。
字符串类型
如果您在谈论字符串文字或text/varchar列,请使用:
SELECT EXTRACT(EPOCH FROM ('2013-07-18' || ' ' || '21:52:12')::timestamp);
或者
SELECT EXTRACT(EPOCH FROM cast('2013-07-18' ||' '|| '21:52:12' AS timestamp));
你的表格不起作用
SELECT EXTRACT(EPOCH FROM TIMESTAMP ('2013-07-18' || ' ' || '21:52:12'));
这会起作用:
SELECT EXTRACT(EPOCH FROM "timestamp" ('2013-07-18' || ' ' || '21:52:12'));
我引用了关于类型转换的手册:
也可以使用类似函数的语法来指定类型转换:
typename ( expression )
但是,这仅适用于名称也可以作为函数名称的类型。例如,double precision不能这样使用,但是等价的float8可以。此外,由于语法冲突,名称interval、time和
timestamp只能在双引号中以这种方式使用。因此,使用类似函数的强制转换语法会导致不一致,应该避免使用。
大胆强调我的。
它的要点:宁可使用前两个语法变体之一。