防止来自主机DB的时区值被客户端覆盖

时间:2012-05-15 13:08:37

标签: c# .net oracle plsql

上午:

在问题previously asked 中,我找到了一些有关管理PL SQL查询中时区值的有用提示。

但是,我误解了这个问题。

我们有一个表格,其中记录的日期和时间因时区而异。这些记录由C#程序集查询并发送到AXIS服务。

当记录到达印度托管的AXIS服务时,时区将更改为IST。

我需要做的是确保记录中的时区是从任何其他时区查询数据时收到的时区。

我该怎么做?我不确定这是一个Oracle / PL SQL查询问题,如果不是,请直截了当。

感谢您的任何见解。

1 个答案:

答案 0 :(得分:1)

传递了哪些数据类型?

根据您之前的问题,您在Oracle中使用的数据类型是DATE。 Oracle DATE没有与之关联的时区。除非您将时区存储在您未提及的单独列中,否则意味着堆栈中的其他位置,正在从Oracle(或写入Oracle)读取DATE并隐含时区。无论堆栈中的哪个组成部分暗示时区都是罪魁祸首。

从Oracle的角度来看,最好的选择是使用TIMESTAMP WITH [LOCAL] TIME ZONE数据类型,以便Oracle知道时区。然后,您可以在PL / SQL中将一个时区中的时间戳转换为另一个时区中的时间戳。因此,您始终可以使用IST或始终以GMT / UTC或始终在Us / Eastern中获取数据。