假設我有一個包含兩個欄位的表:snapshot_date(沒有時區的時間戳)和時區(整數),
| 快照日期 | 時區 |
|---|---|
| 2021-01-12 08:00:00 | -3 |
| 2021-01-12 00:00:00 | -5 |
我需要從該表中提取本地時間,我嘗試使用(EXTRACT (hour from timestamp))::integer timezone,這將適用于第一行,給出一個小時的結果,5但第二行你得到-5,這實際上應該是19因為使用時區調整的相應日期是2021-01-11 19:00:00。所以我想做的是計算一個用時區調整的新快照日期,這樣我就可以正確提取一小時后的時間。
uj5u.com熱心網友回復:
您需要先將小時數添加到時間戳中,然后提取小時數:
extract(hour from snapshot_date make_interval(hours => timezone))
uj5u.com熱心網友回復:
設法通過以下方式獲得預期結果:
extract(hour from timestamp interval '1 hour' * timezone)
uj5u.com熱心網友回復:
就像是:
show timezone; US/Pacific
select ('2021-01-12 08:00:00'::timestamp::text || (-3)::text)::timestamptz;
2021-01-12 03:00:00-08
select extract(hour from('2021-01-12 08:00:00'::timestamp::text || (-3)::text)::timestamptz);
3
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/421788.html
標籤:
上一篇:SQL查詢包括計數中的最新日期
