gpt4 book ai didi

postgresql - 将日期时间列转换为不同时区的查询

转载 作者:行者123 更新时间:2023-11-29 12:11:41 24 4
gpt4 key购买 nike

我正在尝试组合日期、时间和时区,然后将其转换为 UTC 时区。

在下面的查询中,使用存储时区的数据库字段创建了一个错误——即 t.timezone

t.timezone 的值为 Asia/Tokyo 。所有其他时区都采用类似的格式。

select (select CONCAT( DATE(m.last_mailing at time zone 'utc' + INTERVAL '1 day'), ' ', MAKE_TIME(m.email_delivery_hour::int, 0, 0))::timestamp with time zone t.timezone) at time zone 'utc' FROM acts2301_membership.member_subscriptions m INNER JOIN acts2301_email_queue.timezone t ON (m.timezone_reference = t.reference) WHERE m.subscription_reference = '514';

最佳答案

以下是按照您问题中的逻辑执行的查询。但是,这在很大程度上取决于各种数据和服务器的时区设置方式(另请参阅我对您的问题的评论),因此您可能会发现必须调整指定的位置 t.timezone 以及 UTC 的位置:

SELECT ((date_trunc('day', (m.last_mailing AT TIME ZONE 'UTC')::timestamp) + 
interval ('1 day') +
(m.email_delivery_hour::int::text || ':00:00')::time
)::timestamptz AT TIME ZONE t.timezone
)::timestamptz AT TIME ZONE 'UTC'
FROM acts2301_membership.member_subscriptions m
JOIN acts2301_email_queue.timezone t ON m.timezone_reference = t.reference
WHERE m.subscription_reference = '514';

还要注意适当的代码格式之美...

关于postgresql - 将日期时间列转换为不同时区的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31084886/

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