作為示例January 20,我希望能夠通過傳入從我的表中查詢記錄January 21
我發現該EXTRACT方法可用于此類情況,但是在提供月份和年份時如何使用它。我需要將我提供的字串格式化為日期嗎?
SELECT * FROM myTable WHERE EXTRACT(MONTH FROM kick_off) = 'January 20';
謝謝
uj5u.com熱心網友回復:
您需要使用兩個提取呼叫并extract()回傳一個數字,您無法將其與January:
SELECT *
FROM myTable
WHERE EXTRACT(MONTH FROM kick_off) = 1
and EXTRACT(year FROM kick_off) = 2020;
如果您kick_off在上述查詢中有索引,則不會使用該索引。使用范圍查詢通常更有效:
SELECT *
FROM myTable
WHERE kick_off >= date '2020-01-01'
and kick_off < date '2020-02-01'
uj5u.com熱心網友回復:
你可以通過在 kick_off 列上使用 to_char來做到這一點,但它的設計真的很糟糕:
SELECT *
FROM myTable
WHERE to_char(kick_off, 'FMMonth YY') = 'January 20'
然而,正如@a_horse_with_no_name_correctly 指出的那樣,這很可能是一個壞主意,因為這樣的查詢不會在 kick_off 列上使用索引,因此日期范圍過濾器是可取的,因為它在存在索引的情況下會表現得更好。
此外,“FMMonth”格式的行為取決于語言環境(此處的相關檔案:https ://www.postgresql.org/docs/current/functions-formatting.html )。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/326893.html
標籤:sql PostgreSQL
