【问题标题】:PostgreSQL database causing loss of datetime-valuesPostgreSQL 数据库导致日期时间值丢失
【发布时间】:2019-04-26 05:54:27
【问题描述】:

我有一个 PostgreSQL 数据库,其中包含一个带有多个“带时区的时间戳”字段的表。 我有一个工具 (DBSync),我想用它来将此表的内容传输到另一个服务器/数据库。

当我将数据传输到 MSSQL 服务器时,所有日期时间值都将替换为“1753-01-01”。当我将数据传输到 PostgreSQL 数据库时,所有日期时间值都替换为“0001-01-01”。 这些系统的最短日期。

现在我在同一 PostgreSQL 服务器上的不同数据库中重新创建源表(包括内容)。唯一的区别:源表位于不同的数据库中。相同的服务器,相同的路由。只有端口不同。 用户不同,但在每个数据库中我拥有相同的权限。

数据库怎么会负责对数据进行明显不同的解释? PostgreSQL 数据库是否具有可能导致此类行为的特定于数据库的设置?我可以/应该检查哪些数据库设置?

明确地说,我不是在寻找另一种传输数据的方式。我有几个可用的。我想了解的是:如果应用程序从 server X 上的 database Y 中的 table A 读取日期时间信息,怎么会这样? strong>,它给了我错误的日期,而当从 server X 上的 database Z 读取同一个表时,我会得到应有的数据。

【问题讨论】:

  • 你说你“转移”他们..这是什么意思?将数据复制到剪贴板,粘贴到 excel 中,通过电子邮件发送给您的同事,复制并粘贴回带有指向 sql 服务器的链接表的 access 数据库? (完全是在开玩笑,但这里的一些澄清将有助于解释您将这些数据移动到每个系统所采取的步骤)。
  • 你说得对,我会更新问题
  • 如果您可以看到源数据库中的正确时间戳,我怀疑是 DBSync 或源数据库数据类型。我认为有不止一种产品称为 DBSync。编辑您的问题并链接到您正在使用的 DBSync 可能会有所帮助。

标签: postgresql datetime


【解决方案1】:

事实证明,原因可能是服务器版本的差异。一个是 Postgres 9(工作正常),另一个是 Postgres 10(不能正常工作)。 它们是同一台机器上的不同实例。不知怎的,我错过了(脸红)。

传输我的意思是我正在从源数据库 (Postgresql) 读取记录并将它们插入到目标数据库 (mssql 2017)。 这是通过应用程序完成的,我不确定它使用的是什么驱动程序。

我将与提出申请的人一起工作。 对于那些想知道的人:这是这个应用程序:https://dbconvert.com/mssql/postgresql/

找到解决方案后,我将使用找到的解决方案更新此答案。

【讨论】:

  • 术语“Postgres 9”涵盖了7个不同的主要版本
猜你喜欢
  • 1970-01-01
  • 2018-06-20
  • 2022-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 2016-12-14
  • 1970-01-01
相关资源
最近更新 更多