2013-08-23 167 views
0

我一直在使用oracle数据库很长一段时间,并一直存储日期而不打扰时区。 但是现在我们遇到了一个问题,客户端和服务器处于不同的时区,我们需要根据时区执行日期/时间转换。这已经打开了很多问题:存储日期与时区

  1. 我们应该总是存储日期/时间以及它的时区吗? 我这样问,因为如果servertimezone更改,那么我的数据将被破坏。

  2. 如果oracle数据库服务器位于特定区域,那么它应该总是在本地时区运行?这有什么标准吗?

我的第二点是关于位于不同地区但与prod数据库具有相同数据的灾难恢复数据库服务器。如果两个数据库的时区不相同,那么我们遇到了麻烦。

回答

1

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