Oracle:选择时出现时区系统时间戳错误
Oracle: systimestamp at time zone error when selecting
我正在尝试创建一个 select 语句来获取客户端本地时区值的时间。
因此我写了查询
select
systimestamp at time zone :TZ
from
DUAL;
这给了我错误
ORA-00923: FROM keyword not found where expected
00923. 00000 - "FROM keyword not found where expected"
*Cause:
*Action:
Error at Line: 2 Column: 21
我在网上搜索过,但找不到使用绑定参数动态更改所需时区查询的方法。
提前致谢。
向 Oracle 致敬!!
select
current_timestamp||':'||:TZ
from
DUAL;
From the documentation,时区可以是文字或表达式;所以它不能直接是一个绑定变量,但你可以将变量传递给一个函数,将它变成一个表达式:
var TZ varchar2(10)
exec :TZ := 'America/New_York';
select
systimestamp at time zone trim(:TZ)
from
DUAL;
SYSTIMESTAMPATTIMEZONETRIM(:TZ)
-----------------------------------
28-JAN-15 04.05.41.084443000 AMERIC
A/NEW_YORK
任何良性函数都可以。
虽然如果你想要客户端的本地时间,你可以使用 at local
代替:
If you specify AT LOCAL, then Oracle uses the current session time zone.
... 或者只使用 current_timestamp
代替:
select current_timestamp from dual;
我正在尝试创建一个 select 语句来获取客户端本地时区值的时间。
因此我写了查询
select
systimestamp at time zone :TZ
from
DUAL;
这给了我错误
ORA-00923: FROM keyword not found where expected
00923. 00000 - "FROM keyword not found where expected"
*Cause:
*Action:
Error at Line: 2 Column: 21
我在网上搜索过,但找不到使用绑定参数动态更改所需时区查询的方法。
提前致谢。 向 Oracle 致敬!!
select
current_timestamp||':'||:TZ
from
DUAL;
From the documentation,时区可以是文字或表达式;所以它不能直接是一个绑定变量,但你可以将变量传递给一个函数,将它变成一个表达式:
var TZ varchar2(10)
exec :TZ := 'America/New_York';
select
systimestamp at time zone trim(:TZ)
from
DUAL;
SYSTIMESTAMPATTIMEZONETRIM(:TZ)
-----------------------------------
28-JAN-15 04.05.41.084443000 AMERIC
A/NEW_YORK
任何良性函数都可以。
虽然如果你想要客户端的本地时间,你可以使用 at local
代替:
If you specify AT LOCAL, then Oracle uses the current session time zone.
... 或者只使用 current_timestamp
代替:
select current_timestamp from dual;