date
和time
类型
如果您的Day
is 属于 typedate
并且您的Time
is 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
只能在双引号中以这种方式使用。因此,使用类似函数的强制转换语法会导致不一致,应该避免使用。
大胆强调我的。
它的要点:宁可使用前两个语法变体之一。