不同 PostgreSQL 服务器上提取纪元的不同结果

2024-02-27

我们将时间戳转换为纪元,对它们进行一些数学计算,然后将它们转换回时间戳。数据库中的所有时间都是TIMESTAMP WITHOUT TIME ZONE.

由于在英国,切换到夏令时的时间在一台服务器上关闭了一个小时,而在另一台服务器上则没有,所以我做了一些测试:

SHOW SERVER_VERSION;
SHOW TIMEZONE;
SELECT extract(EPOCH FROM TIMESTAMP '1970-01-01');

在一台服务器上我得到

 server_version 
----------------
9.1.15
(1 row)

 TimeZone 
----------
GB
(1 row)

 date_part 
-----------
         0
(1 row)

但另一方面

 server_version 
----------------
9.3.6
(1 row)

 TimeZone 
----------
GB
(1 row)

 date_part 
-----------
     -3600
(1 row)

是否有任何服务器设置可能导致此问题?

或者有以下行为extractPostgres 9.1 之后有变化吗?


是的,行为extractPostgreSQL 9.2 版本中发生了变化。从发行说明: http://www.postgresql.org/docs/9.2/static/release-9-2.html#AEN112278

  • Make EXTRACT(EPOCH FROM timestamp without time zone) http://www.postgresql.org/docs/9.2/static/functions-datetime.html#FUNCTIONS-DATETIME-EXTRACT从当地午夜开始测量纪元,而不是 UTC 午夜 (Tom Lane)

    此更改恢复了 7.3 版本中考虑不周的更改。从 UTC 午夜测量的结果不一致,因为它使得结果依赖于timezone http://www.postgresql.org/docs/9.2/static/runtime-config-client.html#GUC-TIMEZONE设置,其计算为timestamp without time zone不应该是。通过将输入值转换为timestamp with time zone.

这可能是造成差异的原因,因为根据the docs http://www.postgresql.org/docs/9.3/static/datatype-datetime.html,

SQL 标准要求只写timestamp相当于timestamp without time zone,并且 PostgreSQL 尊重这种行为。

正如@unique_id建议的那样,使用timestamp with time zone(又名timestamptz)应该消除不一致。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不同 PostgreSQL 服务器上提取纪元的不同结果 的相关文章

  • “date $1”参数化查询中的 PostgreSQL 语法错误

    尝试参数化我的 SQL 查询 使用 libpq 函数PQexec参数 http www postgresql org docs current static libpq exec html 我陷入了语法错误 SELECT date 1 错误
  • jsonb 与 jsonb[] 对于客户的多个地址

    在 PostgreSQL 的 jsonb 字段中保存多个地址是个好主意 我是 nosql 新手 我想测试 PostgreSQL 来做到这一点 我不想有另一个包含地址的表 我更喜欢将其放在同一个表中 但我有疑问 我见过PostreSQL有js
  • PostgreSQL 索引使用分析

    是否有工具或方法可以分析 Postgres 并确定应创建哪些缺失的索引 以及应删除哪些未使用的索引 我在使用 SQLServer 的 分析器 工具执行此操作方面有一些经验 但我不知道 Postgres 中是否包含类似的工具 我喜欢这样来查找
  • 如何在PostgreSQL事务中使用变量

    如何在 Postgresql 事务内部将值获取到变量中 如果 SELECT 没有返回任何内容 则抛出错误 如果 SELECT 返回数据 则在事务中使用它们 像这样 BEGIN activeRounds SELECT FROM rounds
  • 我的本地 postgresql 数据库 url 的形式是什么?

    我正在学习 Flask sqlalchemy 教程https pythonhosted org Flask SQLAlchemy quickstart html a minimal application https pythonhoste
  • 从两个不同的表中减去值

    考虑表X A 1 2 3 3 6 考虑表 Y A 0 4 2 1 9 如何编写一个查询来获取这两个表之间的差异 以计算下表 例如表 Z A 1 2 1 2 3 目前尚不清楚你想要什么 会是这个吗 SELECT SELECT SUM A FR
  • Postgis安装:类型“几何”不存在

    我正在尝试使用 Postgis 创建表 我按这个做page http postgis refractions net documentation manual 1 5 ch02 html id2619431 但是当我导入 postgis s
  • PostgreSQL函数中如何返回查询结果行?

    我按照教程尝试了很多次 但都失败了 有人可以给我一些例子吗 这是我的代码 它提示 ERROR invalid type name SETOF RECORD create or replace function find returns SE
  • Postgres 在并发更新插入时出现死锁

    我们有一个从数据流中读取信息并将该信息更新到数据库中的应用程序 数据是 Google Drive 上发生的变化 这意味着影响相同对象的许多事件可能会非常接近地发生 将此信息更新插入数据库时 我们遇到了死锁 日志中显示的内容如下 我已经重建并
  • Django 全文搜索优化 - Postgres

    我正在尝试利用 Django v2 1 和 Postgres 9 5 创建一个地址自动完成功能的全文搜索 但性能目前不适合自动完成 我不明白逻辑我得到的绩效结果背后 就信息而言 该表相当大 有 1400 万行 我的型号 from djang
  • 在 Docker Compose 中更改 postgres 容器服务器端口

    我正在尝试使用 Docker compose 在远程服务器上部署第二个数据库容器 该 postgresql 服务器在端口 5433 上运行 而不是第一个 postgresql 容器使用的端口 5432 当我设置应用程序时 我收到以下错误输出
  • WHERE BETWEEN 子句中的 PostgreSQL jsonb 值

    我的数据库表 a table 中有 jsonb 字段 其中包含 int 值 例如 abc def ghk 500 我将使用 WHERE 子句创建带有此字段 ghk 过滤器的 SELECT SELECT FROM a table WHERE
  • 如何优化 postgres 查询

    我正在运行以下查询 SELECT fat FROM Table1 fat LEFT JOIN modo captura mc ON mc id fat modo captura id INNER JOIN loja lj ON lj id
  • 按名称删除 jsonb 数组项

    我有下表 CREATE TABLE country id INTEGER NOT NULL PRIMARY KEY name VARCHAR 50 extra info JSONB INSERT INTO country id extra
  • Django ConnectionAbortedError:[WinError 10053]已建立的连接被主机中的软件中止

    我将 django 与 postgresql 一起使用 每当我尝试保存或删除任何内容时 都会发生此错误 Traceback most recent call last File c program files x86 python35 32
  • 如何配置 pgAdmin III 在启动时打开默认数据库并选择表节点?

    当我启动 pgAdmin III 时 99 的情况下我都需要查看某个特定数据库的表 每次都要点击树 很烦人 当我打开 pgAdmin 时 我希望它自动连接到我的最后一个数据库并展开左侧的树并选择 表 节点 那可能吗 同样令人烦恼的是 当我重
  • 如何使用flyway将数据从一个DB迁移到另一个DB?

    我在不同的服务器上有两个 postgreSql DB 比如说 A 和 B 我可以使用 Flyway 一些如何将所有数据从 DB A 复制到新设置且为空的 B 如果有人指出我正确的方向和工具 这将很有帮助 要求是通过某种工具自动化将数据从一个
  • 查找一列中具有相同值而另一列中具有其他值的行?

    我有一个 PostgreSQL 数据库 将用户存储在users他们参与的表格和对话conversation桌子 由于每个用户可以参与多个对话 并且每个对话可以涉及多个用户 因此我有一个conversation user链接表来跟踪哪些用户正
  • 用户非超级管理员和大对象的 pg_dump

    我与非超级管理员的用户开始了导出数据库的长期职业生涯 但我发现了一个问题 在新版本的postgresql中只有超级管理员才能访问大对象 ERROR permission denied for large object 5141 没有办法做到
  • postgreSQL 将分区表(带插入触发器)从一台服务器转储和恢复到另一台服务器

    尝试将分区表从一台服务器转储到 PostgreSQL 9 4 5 中的另一台服务器 对 postgres 相当陌生 并继承了该项目 如果需要更多背景信息 请告诉我 dbname gt SELECT COUNT id FROM parent

随机推荐