0

我在同一台服务器上有许多数据库,每个数据库代表不同的时区(太平洋、山区、中部和东部)。现在我的程序使用'NOW'CURRENT_TIMESTAMP来获取记录的当前时间。这是个问题。

使用 SymmetricDS 将数据从不同的计算机同步到这个中央服务器。但是,我遇到的问题是,在这个中央服务器上运行的程序是编写的,就好像它们是办公室本地的一样。这意味着当它调用时间戳时,它会在可能不代表他们办公室的服务器时区执行它。结果,某些数据连续性变得混乱。

除了遍历程序并重写利用当前时间的每种情况之外,我们更愿意找到一种方法在每个数据库中以不同的方式表示时间……以某种方式分别抵消每个数据库中的时区。

在阅读了尽可能多的与该主题相关的内容后,我有哪些选择?

4

1 回答 1

1

我认为您应该为此任务创建一个程序。

首先,您可以从一张新桌子开始。让我们使用以下结构:基本办公数据库

此外,让我们创建以下存储过程:

create or alter procedure GETTIMESTAMP (
    IOFFICE_ID bigint)
returns (
    RTIMESTAMP timestamp)
as
begin
  RTIMESTAMP=dateadd(hour,coalesce((select TIMEDIFF from OFFICE_TIMEZONE where OFFICE_ID_=:IOFFICE_ID),0), current_timestamp);
  suspend;
end

此过程将返回正确的时间。如果 office 不存在,则返回本地服务器的 current_timestamp。

当然,将它放入您的数据库需要一些工作。为方便起见,您可以在数据库元数据中进行搜索。IBExpert 具有简单的搜索对话框,但您也可以导出元数据并通过记事本进行搜索。元数据中的 IBExpert 搜索

于 2015-10-08T18:21:16.283 回答