我正在尝试创建一个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参数来动态地更改我对所需时区的查询。
提前谢谢。先知万岁!!
发布于 2015-01-28 09:06:41
从文件中,时区可以是文字或表达式;因此它不能直接成为绑定变量,但可以将变量传递到函数中以将其转换为表达式:
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;发布于 2015-01-28 09:03:04
select
current_timestamp||':'||:TZ
from
DUAL;https://stackoverflow.com/questions/28188116
复制相似问题