是否有根据日期转换为 PST 或 PDT 的 SQL 函数?

Posted

技术标签:

【中文标题】是否有根据日期转换为 PST 或 PDT 的 SQL 函数?【英文标题】:Is there a SQL function to convert to PST or PDT depending on the date? 【发布时间】:2021-08-19 23:21:22 【问题描述】:

我想将太平洋时间转换为 UTC。但是,我必须首先根据日期将时间转换为 PST 或 PDT。是否有可以执行此操作的 SQL 函数,或者有人对创建此函数有任何建议吗?

【问题讨论】:

您使用的是哪个 dbms?在日期/时间方面,许多产品远不符合 ANSI SQL。 我不确定我使用的是什么 dbms。我怎样才能找到这些信息?您是在建议我创建自己的函数吗? 大多数数据库都有自己的功能,可惜功能不同。 谢谢!我有 PostgreSQL 10.16 (Ubuntu 10.16-1.pgdg16.04+1) at time zone 'pst' at time zone 'utc'at time zone 'pdt' at time zone 'utc' 会给你不同的结果,相差 1 小时。并且select timestamp'2021-06-01 11:23:39' at time zone 'america/los_angeles' at time zone 'utc' 返回与“pdt”相同的结果,正如预期的那样。 【参考方案1】:

您提供的链接作为时间戳指南几乎毫无用处。如果您要使用时区,请将您的时间戳存储在 timestamp with time zone 字段中。 timezone 实际上不会被存储,但时间戳将被存储为UTC。每当输入 timestamp 时,它都会旋转到 UTC 值。这使得在未来更容易处理价值。如果您想考虑DST 转换,您将需要使用完整的时区名称,例如US/Pacific,因为它们涵盖了构成标准/夏令时时区的两个偏移量(PST/PDT)。正如您发现的那样,使用偏移量 PST(-08)PDT(-07) 可以获得固定偏移量,无论日期如何。

【讨论】:

以上是关于是否有根据日期转换为 PST 或 PDT 的 SQL 函数?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Snowflake 将时间 PST/PDT 转换为时间戳

使用 dateutil 从 PST 转换为 UTC 的问题

需要在 oracle 中将任何时区转换为 GMT 时区

python / pytz问题从本地时区转换为UTC然后返回

在python中将日期时间从PDT转换为UTC

将 PST 中的日期与时间转换为 UTC 格式