使用时区存储日期

时间:2013-08-23 14:34:20

标签: database oracle date datetime timezone

我已经与oracle DB合作了很长时间,并且一直在存储日期而不用担心时区问题。 但现在我们遇到的问题是客户端和服务器位于不同的时区,我们需要根据时区执行日期/时间转换。现在这已经提出了很多问题:

  1. 我们是否应始终存储日期/时间及其时区? 我问这个是因为如果servertimezone发生变化,那么我的数据就会被破坏。

  2. 如果oracle db server位于特定区域,那么它应该始终在本地时区运行吗?这有什么标准吗?

  3. 我的第二点与DR数据库服务器有关,这些服务器位于不同的区域但与prod DB具有相同的数据。如果两个数据库的时区不相同,那么我们就遇到麻烦了。

1 个答案:

答案 0 :(得分:1)

为了能够在他们的时区显示客户日期,您需要一些抵消。 例如,您的服务器在美国EDT中运行,您可以节省多年的时间。您的所有数据都以这种方式保存。因此,您需要创建一个字段,您可以在其中存储每个用户的偏移量。然后,您需要将此偏移量应用于select上的每个日期/时间字段。你是怎么做到的,我不知道 - 因为我不知道你如何使用你的数据。它只是一个选择声明,报告或网站吗?但如果这是一个应用程序,客户端将加载包括偏移量的用户信息。例如,在您的情况下,美国EDT中的用户将偏移0。然后,db请求的任何日期/时间字段都应该应用偏移值。当然,由于您的应用程序从一开始就不是为此而设计的,因此可能需要付出一些努力。