早晨:
在我之前问过的一个问题中,我收集了一些关于在 PL SQL 查询中管理时区值的有用技巧。
然而,我误解了这个问题。
我们有一个表,其中记录的日期和时间因时区而异。这些记录由 C# 程序集查询并被发送到 AXIS 服务。
当记录到达在印度托管的 AXIS 服务时,时区更改为 IST。
我需要做的是确保记录中的时区是从任何其他时区查询数据时收到的时区。
我该怎么做?我不确定这是否是一个 Oracle/PL SQL 查询问题,如果不是,请让我直截了当。
感谢您的任何见解。
正在传递哪些数据类型?
根据您之前的问题,您在 Oracle 中使用的数据类型是DATE
. OracleDATE
没有与之关联的时区。除非您将时区存储在您未提及的单独列中,否则这意味着堆栈中的其他DATE
位置正在从 Oracle 读取(或写入 Oracle)并隐含时区。堆栈的任何组件都暗示时区将成为罪魁祸首。
从 Oracle 的角度来看,最好的选择是使用一种TIMESTAMP WITH [LOCAL] TIME ZONE
数据类型,以便 Oracle 知道时区。然后,您可以在 PL/SQL 中将一个时区的时间戳转换为另一个时区的时间戳。因此,您始终可以在 IST 或始终在 GMT/UTC 或始终在美国/东部获取数据。