2016-07-08 92 views
1

假设我有一个表foo与column changed_colum类型的日期。现在oracle:如何获取本地时间戳而不是服务器时间戳

我想从科拉姆获得本地时间戳,我尝试以下方法:应用程序服务器的

select TO_CHAR(cast (changed_colum as timestamp) at local, 'YYYY-MM-DD HH24:MI:SS TZR') from foo 

result---> 
2016-07-08 08:48:35 EUROPE/BERLIN 

但这打印的日期。我需要会话的本地日期而不是服务器。

任何想法?

+1

由于'changed_column'只是一个'date',显然它不包含时区信息。时间数据如何在该列中解释?它是UTC吗?其他?换句话说,如果数据显示“7月8日@ 5 PM”,那是什么时区的“5 PM”? – sstan

回答

0

并不清楚你的要求......如果你知道的日期都是“使用服务器时区”,那么你可以使用

from_tz(cast (changed_column as timestamp), dbtimezone) at time zone sessiontimezone 

,然后根据需要对其进行格式化。

0

DATE数据类型不包含任何时区信息。这些日期的时区是什么?除非你不知道你的应用程序的设计,否则你不能转换。

AT LOCAL等于AT TIME ZONE SESSIONTIMEZONE,即您的应用程序服务器在登录时设置的时区(或由ALTER SESSION SET TIME ZONE = ...设置)。如果你喜欢这个时区等于你的客户端的时区,那么你必须在应用服务器上编码。

相关问题