ORA-01857:无效的时区

时间:2019-04-10 11:28:21

标签: sql oracle oracle11g

我正在尝试从UTC时区转换为GMT时区。

我在查询下面运行此命令,并收到ORA错误。

select NEW_TIME(SYSDATE, 'UTC', 'GMT') from dual;

错误是

Error starting at line : 1 in command -
select NEW_TIME(SYSDATE, 'UTC', 'GMT') from dual
Error report -
ORA-01857: not a valid time zone

我用Google搜索,发现NEW_TIME函数不接受UTC时区。

那么,您能建议我替代方法/从UTC转换为GMT的任何方式吗?

2 个答案:

答案 0 :(得分:1)

UTC也称为GMTNEW_TIME已接受后者。因此,您想要的等同于:

SELECT NEW_TIME(SYSDATE, 'GMT', 'GMT')
FROM dual;

NEW_TIME的呼叫毫无意义。检查here以获得可接受的时区代码列表。

答案 1 :(得分:0)

使用FROM_TZ将没有时区的时间戳转换为有时区的时间戳(即UTC),然后使用AT TIME ZONE 'GMT'将其从第一个时区转换为{ {1}}时区。您需要在各个地方使用GMT,因为CAST期望使用FROM_TZ而不是TIMESTAMP,然后您需要在以下位置回退到DATE最后(假设您不希望使用DATE值):

TIMESTAMP

输出

| GMT_TIME            |
| :------------------ |
| 2019-04-10T14:05:37 |

db <>提琴here