0

我一直在使用 oracle DB 很长时间,并且一直在存储日期而不用担心时区。但是现在我们有一个问题,客户端和服务器在不同的时区,我们需要根据时区进行日期/时间转换。这现在引发了很多问题:

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

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

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

4

1 回答 1

1

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

于 2013-08-23T17:43:45.480 回答