Postgresql
帶有周數和工作日的 to_date() 的意外行為
我嘗試使用該函式將日期字元串(年、週、星期幾 =
'YYYY-WW-D'
)轉換為日期to_date()
。我得到了這些結果(demo:db<>fiddle):
date string | to_date() ------------------------- '2019-1-1' | 2019-01-01 '2019-1-2' | 2019-01-01 '2019-1-3' | 2019-01-01 '2019-1-4' | 2019-01-01 '2019-1-5' | 2019-01-01 '2019-1-6' | 2019-01-01 '2019-1-7' | 2019-01-01 '2019-2-1' | 2019-01-08 '2019-2-2' | 2019-01-08
我不清楚,為什麼這會導致一周中的每一天都在同一日期。
如果我採用 ISO 格式 (
'IYYY-IW-ID'
) 這將按預期工作 ( demo:db<>fiddle ):date string | to_date() ------------------------- '2019-1-1' | 2018-12-31 '2019-1-2' | 2019-01-01 '2019-1-3' | 2019-01-02 '2019-1-4' | 2019-01-03 '2019-1-5' | 2019-01-04 '2019-1-6' | 2019-01-05 '2019-1-7' | 2019-01-06 '2019-2-1' | 2019-01-07 '2019-2-2' | 2019-01-08
為什麼它適用於 ISO 模式,而不適用於標準模式?我在這裡想念什麼?
這種行為記錄在案:
在
to_timestamp
和to_date
中,工作日名稱或數字(DAY
、D
和相關欄位類型)被接受,但在計算結果時會被忽略。Q
四分之一 ( ) 欄位也是如此。