2014-01-10 47 views
0

Oracle数据库托管在美国。在英国托管的应用服务器。如何使用IST时区从ORACLE数据库选择日期时间

我想从印度访问oracle应用程序,我该如何编写一个显示IST时间的查询。 (本地机器时间)。

这是一个oracle形式,所以不能编码。

下面试过,但没有工作

SELECT 
TO_CHAR(current_date, 'DD-MON-YYYY HH24:MI') 
FROM DUAL 
+1

我不知道oracle形式;但是可以将TZ_OFFSET函数用于IST。 – Sanjeev

回答

-1

更改您的时区与该第一,

systimestamp AT TIME ZONE 'IST' 
+0

这看起来不像Oracle命令 –

+1

它是。但可能它应该是'从'dual'选择'AT TIME ZONE'亚洲/加尔各答'的系统时间戳;' – Noel

+0

是的,你是对的。对不起,我无法撤销我的downvote。你的帖子稍作修改:它必须是'亚洲/加尔各答' –

0

印度的时间是格林尼治时间-4小时,SYS_EXTRACT_UTC(SYSTIMESTAMP)给出时间GMT任何Oracle服务器

select to_char(SYS_EXTRACT_UTC(SYSTIMESTAMP) + 
     (5.5/24), 'DD-MON-YY HH24:MI:SS') from dual; 
+0

请注意,这(也许)仅适用,因为印度不在DST之下... –

+0

@ Clockwork-Muse:你是对的,印度不在夏令时,因此这个查询将永远为印度工作:) – San

0

首先更改会话的时区:

ALTER SESSION SET TIME_ZONE = 'Asia/Calcutta'; 
SELECT TO_CHAR(CURRENT_DATE, 'DD-MON-YYYY HH24:MI') FROM dual; 

注意,不能使用短名称,因为“IST”也被用于“印度标准时间”和“伊朗标准时间”和“以色列标准时间”和“印尼标准时间”。因此,Oracle需要全名(参见IANA time zone database)或UTC偏移量,例如, ALTER SESSION SET TIME_ZONE = '+5:30';。但是,如果您的国家使用DST(夏令时),则此风险更大。

相关问题