首页 > 解决方案 > 在 Oracle 中将带时区的 Varchar 转换为时间戳

问题描述

我在将 varchar 转换为 DateTime/timestamp 时遇到问题。这是案例

ID    EVENT_TIME(Varchar)
1    2020-04-12T09:25:53+0800
2    2020-04-12T09:25:53+0700
3    2020-04-12T09:25:53+0900

返回我想要的,所有时间戳都转换为+0700

ID    EVENT_TIME(Datetime)
1    2020-04-12 10:25:53 
2    2020-04-12 09:25:53
3    2020-04-12 11:25:53

这可能吗?以及如何使用 oracle 来做到这一点?

谢谢

标签: sqloracledatetimetimestamptimestamp-with-timezone

解决方案


请使用以下查询将 varchar 转换为时间戳,然后使用to_timestamp_tz再次将其转换为所需的时间格式to_char

select ID, to_char(to_timestamp_tz(EVENT_TIME, 'YYYY-MM-DD"T"HH24:MI:SS.FF TZH:TZM'), 'YYYY-MM-DD HH24:MI:SS') as event_date from table_name;

例子:

select to_char(to_timestamp_tz('2020-04-12T09:25:53+0800', 'YYYY-MM-DD"T"HH24:MI:SS.FF TZH:TZM'), 'YYYY-MM-DD HH24:MI:SS') as event_date from dual;

在此处输入图像描述


推荐阅读