我在将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来做呢?
谢谢
2条答案
按热度按时间bvpmtnay1#
请使用下面的查询将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;
krugob8w2#
正如@jim所说,你可以使用
to_timestamp_tz()
使用字符文字将字符串转换为时间戳值:将设置为可以使用的+07:00偏移
at time zone
:如果不想保留时区部分,可以强制转换为普通时间戳:
或者你可以
cast (... as date)
因为你没有分数秒。或者可以将其转换回字符串以供显示:
db<>小提琴