[英]How to compensate for daylight savings time in the future for ICS file calendar downloads
[英]How to compensate for daylight savings time PostgreSQL
我有一個 PostgreSQL 數據庫,其中時間戳存儲如下:
6/22/2022 11:00:00 AM EST
或者
12/22/2022 11:00:00 AM EDT
它們被保存為類型 TIMESTAMP(6)。
無論它是如何保存的,我都需要在當前的任何時區(EST 或 EDT)中檢索日期。 這必須在 PostgreSQL 而不是前端完成。
我看到的每個答案都提到,數據存儲方式的簡單改變是最好的解決方案。 就我而言,更改日期已存儲的方式以及以后如何存儲它們不是一種選擇,因此我必須找到另一種方法。
這甚至可能嗎?
假設您的服務器有一個涵蓋EST/EDT
TimeZone
:
show timezone;
TimeZone
------------------
America/New_York
select '6/22/2022 11:00:00'::timestamp::timestamptz;
timestamptz
------------------------
2022-06-22 11:00:00-04
select '12/22/2022 11:00:00'::timestamp::timestamptz;
timestamptz
------------------------
2022-12-22 11:00:00-05
要轉換為格式化字符串:
select to_char('12/22/2022 11:00:00'::timestamp::timestamptz, 'MM/DD/YYYY HH:MI:SS AM TZ');
to_char
----------------------------
12/22/2022 11:00:00 AM EST
使用您的輸入的示例:
SELECT t AS input
, t at time zone 'EDT' AS edt
, t at time zone 'EST' AS est
FROM (VALUES('12/22/2022 11:00:00 AM EDT'::timestamptz)) s(t);
這就是我得到的輸出:
對於帶時區的時間戳,內部存儲的值始終為 UTC。 輸出帶有時區值的時間戳時,總是從 UTC 轉換為當前時區
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.