【发布时间】:2013-10-14 03:53:01
【问题描述】:
我在 Linux 上将 C++ 和 libpq(PostgreSQL C 库)与 gcc 和 PostgreSQL 8.2.19 一起使用。 我正在使用“带有时区的时间戳”类型的列。 libpq 将查询结果作为 C 字符串返回。有时(并非总是)我发现返回的字符串向前移动一小时(但与其他时区相同:+02 即 CEST)。我验证了问题直接出在查询返回的字符串中(一个普通的 SELECT,其列名包含“带有时区的时间戳”类型),而不是后续的转换,并且大多数执行运行准确。这是 Linux 和/或 PostgreSQL 的一种(已知)错误吗?
编辑: 有一次在以下转换中发生错误,所以我在我的平台上尝试了这段代码(显然包括库) http://codepad.org/HiBbjX0V 实际上,即使这不连贯,但错误却相反:大多数时间时间向前移动一小时,只有在第二个输出中,小时仍然是 11:33:52,就像在代码中一样。 我尝试了手动设置小时和互联网小时的 Ubuntu。两种情况都存在错误。 我认为错误是在系统级别,但我不知道是什么。
编辑: 我不确定该错误是否也来自 PostgreSQL,因为带有时间戳的行会快速连续更新两次,并且可能是由于第一次更新,将小时转换为 Linux 类型,如我在代码中所示。
【问题讨论】:
-
夏季/冬季调整?
-
这就是为什么你不存储当地时间,人们。 stackoverflow.com/questions/4715620/…
标签: c++ sql c postgresql timestamp