Oracle TIMESTAMP与/ timezone数据类型混淆

时间:2010-05-18 21:10:35

标签: oracle datetime date timezone

你什么时候使用TIMESTAMP w / timezone而不是TIMESTAMP w /本地时区?

当数据存储在数据类型为TIMESTAMP w / local tz的列中时,数据将标准化为数据库时区,并且时区位移不会存储为列数据的一部分。当用户检索数据时,Oracle会在用户的本地会话时区中返回它。

这不是更有用吗?我想不出为什么我想要使用TIMESTAMP w / timezone并找回一些带有UTC偏移的狼吞虎咽的原因。

2 个答案:

答案 0 :(得分:2)

有时候知道事件在当地时区的背景下发生的时间可能很重要 - 而不是查询事件的时间等等。

假设示例:医疗应用程序记录一个人的睡眠模式。你可能会对他们上床睡觉的时间更感兴趣,在他们的时区,而不是他们在你当地时区上床睡觉的时间;另外,你还可以确定他们当时的时区,这样你就可以判断他们当时是否在时区之间旅行,可能还有时差。

答案 1 :(得分:1)

数据库规范化可能不准确,原因是: 1.在对具有本地时区的TIMESTAMP进行规范化时,数据库取决于客户端提供的时区(即会话时区)。由于未设置系统时区等原因,会话时区可能不准确。 2.如果客户端提供了时区名称(而不是时区偏移量),则数据库需要检索相应的时区偏移量。它使用系统表自动完成。现在想想夏令时。如果夏令时转换日期经常更改,则数据库系统表中的数据可能不准确。您需要跟踪此类更改并立即获取/应用数据库补丁(这可能无法始终存在),因此数据库可以更新其系统表以反映时区偏移。