Yas*_*tha 14 postgresql datetime casting concatenation postgresql-9.1
我在数据库中有日期和时间字段.我希望通过连接日期和时间来获得时间戳.如何在PostgreSQL中执行此操作?
我这样做了:
SELECT EXTRACT(EPOCH FROM TIMESTAMP '2011-05-17 10:40:28');
Run Code Online (Sandbox Code Playgroud)
它工作正常.
但是当我尝试替换日期和时间字段时,我收到以下错误:
SELECT EXTRACT(EPOCH FROM TIMESTAMP Day || ' ' || Time);
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)ERROR: syntax error at or near "Day" LINE 1: ...quest_count > 0 AND (EXTRACT(EPOCH FROM TIMESTAMP Day || ' ' || Time)) > (e...
Clo*_*eto 16
SELECT EXTRACT(EPOCH FROM (Day || ' ' || Time)::timestamp);
Run Code Online (Sandbox Code Playgroud)
Erw*_*ter 15
date
和time
类型如果你Day
的类型date
和你Time
的类型time
,有一个非常简单的解决方案:
SELECT EXTRACT(EPOCH FROM (day + time));
Run Code Online (Sandbox Code Playgroud)
您可以添加date
和time
获取timestamp [without time zone]
(根据会话的时区设置进行解释).
而且,严格来说,提取时代本身与您的问题无关.
date
+ time
导致a timestamp
,就是这样.
如果您正在谈论字符串文字或text
/ varchar
列,请使用:
SELECT EXTRACT(EPOCH FROM ('2013-07-18' || ' ' || '21:52:12')::timestamp);
Run Code Online (Sandbox Code Playgroud)
要么
SELECT EXTRACT(EPOCH FROM cast('2013-07-18' ||' '|| '21:52:12' AS timestamp));
Run Code Online (Sandbox Code Playgroud)
您的形式并不能正常工作
SELECT EXTRACT(EPOCH FROM TIMESTAMP ('2013-07-18' || ' ' || '21:52:12'));
Run Code Online (Sandbox Code Playgroud)
这可行:
SELECT EXTRACT(EPOCH FROM "timestamp" ('2013-07-18' || ' ' || '21:52:12'));
Run Code Online (Sandbox Code Playgroud)
我引用关于类型转换的手册:
也可以使用类似函数的语法指定类型转换:
typename ( expression )
但是,这仅适用于名称也作为函数名称有效的类型.例如,
double precision
不能用这种方式,但相当于float8
可以.此外,由于语法冲突,名称interval
,time
和timestamp
只能以这种方式使用,如果它们是双引号.因此,使用类似函数的强制语法会导致不一致,并且应该避免使用.
大胆强调我的.
它的要点:而是使用前两种语法变体之一.
归档时间: |
|
查看次数: |
14882 次 |
最近记录: |