指定用作参考时区的时区

2023-12-02

根据前两个答案,问题与最初发布的一样不清楚,因此我完全重写它:

以下问题仅涉及如何存储数据以及存储什么数据,而与检索时转换数据的形状或形式无关。因此,在 SELECT 处转换为所需的时区并不是一个合适的答案。

将值插入到带有时区的时间戳字段时,会检索(并因此可能存储)该值,并将时间戳转换为插入时数据库的本地时区。

也就是说,时间戳插入为2012-01-01 00:00:00+00:00被检索为2011-12-31 19:00:00-05,其中插入时数据库的本地时区是-05。在夏令时期间插入的时间戳,此时数据库位于-04,使用返回-04时区。

我想要的是所有时间戳在存储时使用任意时区(因此可以检索所有时间戳,而无需像具有该时区那样进行任何额外的工作)。也就是说,如果服务器绕地球运行,则所有时间均为+00:00(任意时区),而不是-12:00 to +12:00.

我可以插入带有时区的时间戳列,以便所有时间戳都相对于任意时区存储吗?如果是这样,怎么办?


原文如下。

当插入一个值到timestamp with time zone字段,它正在转换为服务器的当前时区。

示例:如果我插入一个指定时区的值-1,检索它会返回时间-5(插入时服务器的时区)。

是否可以指定应使用任意时区存储它?

注意:这个问题不是如何将返回的时间转换为另一个时区,这是特定于时间如何存储的。


你必须另外保存时区偏移量 to the timestamp.

正如@Milen 已经解释的那样(并链接到manual): a timestamp只保存一个时间点(作为抽象值)。时区修改器是not已保存,仅用于调整timestamp关系到UTC.

考虑以下演示:

-- DROP TABLE tbl;
CREATE TEMP TABLE tbl (id int, myts timestamptz, mytz interval);

INSERT INTO tbl VALUES
 (1, now()                , EXTRACT (timezone from now()) * interval '1s')
,(2, '2012-01-01 00:00-05', interval '-5h')
,(3, '2012-01-01 00:00+04', interval '4h')
,(4, '2012-11-11 20:30+03', interval '3h');

SELECT *
      ,(myts AT TIME ZONE mytz)::text
       || CASE WHEN mytz > '0:0' THEN '+' ELSE '' END
       || to_char(mytz, 'FMHH24:mi') AS timestamp_at_origin
FROM tbl;

本地运行一下看看。特别注意细节在时区构造,以及如何从(本地!)timestamp with time zone.
now()回报timestamp with time zone or timestamptz简而言之。

EXTRACT (timezone from now()) * interval '1s'

timestamp_at_origin显示时间戳和时区(如其来源所示)。如果我理解你的问题,那么这就是你正在寻找的。
您可以进一步改进格式。

您可能对此感兴趣相关问题这揭示了时区的模糊性和陷阱。

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

指定用作参考时区的时区 的相关文章

随机推荐

  • 如何通过 jQuery 将文件发送到 php?

    我尝试通过 jQuery 将文件发送到 PHP 文件进行处理
  • php preg_replace - 保留指定字符+外语字母[重复]

    这个问题在这里已经有答案了 我需要一个从字符串中删除所有字符 未在模式中列出 但保留外语字母 的函数 我知道 preg replace 有 p 模式 但由于某种原因我无法让它工作 我使用这个函数来删除字符串中的所有垃圾 main conte
  • 动态图片绑定vue

    我想做与这里相同的事情 但我想使用 images sample 作为参数 例如props images sample
  • Schema.org:使用什么,微数据还是 JSON-LD?

    数据标记Schema org对于 Google Yahoo Bing 和 Yandex 等搜索网站来说 片段非常适合 然而 我认为大多数网站管理员都使用微数据 但几乎从不使用JSON LD 最近了解了JSON LD 有一些疑惑 我可以在没有
  • SQL:如何按两列的唯一组合进行分组?

    Context A table message有列from user id and to user id 用户应该看到最近的对话以及显示的最后一条消息 一个对话由多条消息组成 这些消息具有相同的用户 ID 组合 用户发送消息 用户接收消息
  • Python 相当于 MATLAB 的“ismember”函数

    经过多次尝试优化代码后 最后一个资源似乎是尝试使用多个内核运行下面的代码 我不确切知道如何转换 重新构造我的代码 以便它可以使用多个内核运行得更快 如果我能获得实现最终目标的指导 我将不胜感激 最终目标是能够针对数组 A 和 B 尽可能快地
  • 在 JavaScript 中用正则表达式替换字符串

    一个特定的正则表达式现在困扰着我 我只是想更换范围 100像这样的字符串 var string commonstringblabla b range 100 b stringandsoon with commonstringblabla b
  • Git 预提交挂钩

    我是 git hooks 的新手 我无法理解下面的预提交挂钩 谁能告诉我这是如何工作的 这里我怀疑 grep 将如何在提交的文件中发生 因为我们不会将这些文件带到任何地方 抱歉 如果我问错了问题 但请帮助我理解 git hooks usr
  • 外部服务的 Kubernetes 入口规则

    这个问题类似于question但这更多的是围绕可以配置的规则中的路径 入口应该能够处理内部服务和外部服务 外部服务的 URL 应该类似于http 主机名 80 es 当用户点击此 url 时 应将其重定向到外部服务 服务定义和入口规则配置如
  • 在android中从sdcard中删除文件

    我正在制作一个应用程序 其中我必须删除 SD 卡中最近添加的 mp3 文件 歌曲保存的格式为 Songhello 17 26 amr where 17 26是添加歌曲的时间 谁能帮我如何删除SD卡中最近添加的文件 我的意思是说我想删除时间意
  • 如何在涉及链接的 Access 中连接多行?

    我的 Access 数据库存在以下问题 我有 3 个表 分别是 tblComponents tblErrors 和 linkComponentsErrors 这是一种多对多关系 这意味着一个组件可以有多个错误 而一个错误可以有多个组件 这些
  • 数字文字末尾的 F 和 D 是什么意思?

    我见过一些这样的符号 但我找不到任何奇怪的地方 double d 5D float f 3 0F 5后面的D和F到底是什么意思 意味着这些数字分别是双精度数和浮点数 假设你有 void foo int x void foo float x
  • 如何重新排列 PDF 文件的页面顺序?

    我最后正在生成目录 我想将目录移动到开头 假设我的 PDF 有 16 页 目录从第 13 页开始到第 15 页结束 我想将目录移至第二页 这样第一页仍为第 1 页 最后一页仍为第 16 页 这段代码没有给我我想要的 public void
  • 如何从 aframe 中的 3D 对象获取边界框信息?

    我正在开发一个 aframe 项目 该项目涉及将未知大小的 3D 对象加载到我的场景中 当然 在将对象放入场景之前 我希望将其大小调整到一定的大小 例如固定高度 但是如何从对象的边界框中提取宽度 高度和深度等信息呢 您需要在此处使用 A F
  • 我如何在原型工作中得到“this = this”

    好吧 偷看 所以我知道弄乱原型是不好的做法 但无论如何 Array prototype rev function this reverse 工作正常 更新源数组变量 ary 如预期 例如 ary 123 456 ary rev result
  • 在 ggplot2 中用梯度和变化的图例特征标记线条

    我正在使用以下数据查看 1954 年至 2000 年每月最高气温的变化 http pastebin com 37zUkaA4 为了清楚起见 我决定只在图表上绘制每个月的 abline 我的代码如下 OxTemp Month lt facto
  • 如何删除 sed 中第一个模式后面的空格

    我有一个文件 file txt Name 6 1 4 Float Time 453802 464204 466345 464481 466131 464283 465065 462561 Name 6 1 4 Logic Good Time
  • 在 Outlook 中触发外部 API 调用,回复来自特定电子邮件 ID 的电子邮件

    当我回复来自特定发件人的电子邮件时 我尝试触发外部 API 为了描述用例 我们有一个内部平台 人们可以在其中提出具体问题 专家会回答这些问题 类似于堆栈溢出 我们希望为专家回答问题启用 Outlook 功能 这将使专家能够回复电子邮件通知
  • 使用信号和 sigpipe

    我正在做一项作业 涉及编写一个程序来使用 fork 进程 信号和选择来处理数据 计算 pi 我现在正在处理信号 我想我想做的是使用 SIGPIPE 因此如果程序捕获它 它会尝试再次写入管道 如果进程尝试写入没有读取器的管道 将会发送 SIG
  • 指定用作参考时区的时区

    根据前两个答案 问题与最初发布的一样不清楚 因此我完全重写它 以下问题仅涉及如何存储数据以及存储什么数据 而与检索时转换数据的形状或形式无关 因此 在 SELECT 处转换为所需的时区并不是一个合适的答案 将值插入到带有时区的时间戳字段时