gpt4 book ai didi

sql - 尝试在 postgresql 中重新格式化时间戳

转载 作者:行者123 更新时间:2023-11-29 13:39:25 25 4
gpt4 key购买 nike

我似乎找不到适合我要实现的目标的问题/答案。目前,这是我的数据库输出时间戳的方式:

2015-08-18T19:43:04.738-06:00

但是,我希望它在列中显示为:

2015-08-18T19:43:04.738 America/Denver

Google 最近更改了他们的格式设置选项,而不是下载输出并执行查找/替换,我想要一个不需要额外工作的输出。我查看了 SO 并尝试使用修剪和替换但没有运气。

提前感谢您的帮助!

最佳答案

For whatever reason, the one we've used since February (third from the bottom) no longer works.

2015-08-18T19:43:04.738-06:00 格式不太正确。 Google 不接受毫秒(如果他们不忽略它会很烦人)。您需要发送 2015-08-18T19:43:04-06:00。他们可能对接受的内容变得更加严格。

试试 date_trunc('second', yourtime)


不可能准确将偏移量(如-0600)转换为时区(如美国/丹佛)。他们说两种不同的东西。

-0600 绝对肯定地说,这个时间比 UTC 晚了 6 小时。 . 12:00:00-06:00和18:00:00Z(Z代表UTC)是同一时间。

America/Denver 表示根据当时美国科罗拉多州丹佛市适用的规则来解释这个时间戳。要弄清楚 UTC 时间,您需要查找美国科罗拉多州丹佛市的偏移规则。偏移量将根据一年中的时间而变化,通常是因为夏令时。由于规则发生变化,因此按照当时的规则应用规则很重要。

例如,2006-03-15 12:00 America/Denver is -0700 .但是明年2007-03-15 12:00 America/Denver is -0600 . 2006年至2007年the daylight savings time rules in the US changed .

-06:00 避免了所有这些,只是说时间与 UTC 相差六个小时。

您可以通过简单地将偏移量替换为 America/Denver 来伪造它。只要您只发送最近的时间就应该有效。你最多会在一个小时内离开。但不要那样做。

除非 Google Ads 特别需要时区,否则向他们发送一个时区是没有意义的。在内部,Postgres 无论如何都以 UTC 格式存储您的时间,并将它们转换为您服务器的时区,America/Denver。发送谷歌 UTC。并且,如上所述,切断毫秒数。

select date_trunc('second', '2015-08-18T19:43:04.738-06:00'::timestamp with time zone at time zone 'UTC') as datetime;
datetime
---------------------
2015-08-19 01:43:04

关于sql - 尝试在 postgresql 中重新格式化时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57560788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com