我具有类似'2018-04-18T18:11:16+01:00'
类型的以下varchar
的时间戳,并希望将其转换为timestamp
类型。我在使用to_timestamp()
时遇到问题。有没有使用to_timestamp()
函数的特定方法,可以让我进行所需的转换?如果没有,还有其他方法可以实现我的目标吗?
做
to_timestamp('2018-04-18T18:11:16+01:00', 'DD-MM-YYYY HH24:MI:SS')
给出
错误错误:日期/时间字段值超出范围: “ 2018-04-18T18:11:16 + 01:00”
我希望像'2018-04-18T18:11:16 + 01:00'这样的varchars可以转换为2018-04-18 17:11:16(类型是时间戳)
答案 0 :(得分:1)
如果您只是想将字符串放入包含时区的时间戳记中:
只需将其转换为timestamp with time zone
(= timestamptz
)类型:
SELECT '2018-04-18T18:11:16+01:00'::timestamptz
timestamp without time zone
(= timestamp
)
SELECT '2018-04-18T18:11:16+01:00'::timestamp
如果要将其转换为UTC的时间戳(计算为-1),则可以执行以下操作:
SELECT ('2018-04-18T18:11:16+01:00' AT TIME ZONE 'UTC')::timestamp