我有一个名为VARCHAR(64)
的{{1}}列的表,其中包含具有以下格式的日期时间字符串:
datetimestamp
。
我尝试在我的select语句中使用[02/Jun/2016:23:58:30 +0000]
将其转换为日期,但我收到的格式无效'错误。不知道它的UTC位是什么,或者它是什么搞乱了......什么是正确的语法?
谢谢!
答案 0 :(得分:0)
select to_date('02/Jun/2016:23:58:30 +0000', 'DD/Mon/YYYY:HH24:MI:SS');
| to_date |
|------------|
| 2016-06-02 |
答案 1 :(得分:0)
由于to_timestamp
不允许时区信息,因此有点复杂。
我提出了这个问题:
WITH d(part) AS
(SELECT regexp_matches(
'02/Jun/2016:23:58:30 +0000',
'^([^ ]*) ([-+]?\d\d)(\d\d)$'
)
)
SELECT
CAST (to_timestamp(d.part[1], 'DD/Mon/YYYY:HH24:MI:SS')
AT TIME ZONE (d.part[2] || ':' || d.part[3])
AS timestamp with time zone)
AS converted
FROM d;
converted
------------------------
2016-06-02 21:58:30+02
(1 row)
(我在时区UTC + 02。)