我正在尝试创建一个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
我在网上搜索过但我找不到使用bind参数动态改变查询所需时区的方法。
提前致谢。 所有人都欢呼Oracle!
答案 0 :(得分:0)
select
current_timestamp||':'||:TZ
from
DUAL;
答案 1 :(得分:0)
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
:
如果指定AT LOCAL,则Oracle使用当前会话时区。
...或者只使用current_timestamp
代替:
select current_timestamp from dual;