我有一個 DAY_DATE 列,其中包含諸如“11-2-2021”之類的值。我想提取值在去年或更高年份內的行。這意味著當前日期是 11-3-2022,這意味著我想獲取日期為 11-3-2021 或更早的所有行。
我嘗試了以下方法:
SELECT * FROM TABLE_A
WHERE 1=1
AND TO_CHAR(DAG_DATUM_VERZONDEN, 'YYYYIW') >= TO_CHAR(SYSDATE, 'IYYYIW') - 52
但是,這不起作用,因為您不能總是減去 52 周。例如,當您在 2022 年的第 10 周時,您只能減去 2022 年(它不包括 2021 年的任何內容,因為它不包括年份的變化)。我再次嘗試做其他事情:
SELECT * FROM TABLE_A
WHERE 1=1
AND TO_CHAR(DAG_DATUM_VERZONDEN, 'YYYYMM') >= to_char(trunc(add_months(SYSDATE,-12),'YEAR'),'YYYYMM')
但是,這會回傳 2021 年的所有內容,而不一定回傳高于 2021 年 11 月 3 日的行。還有其他人知道這個問題的答案嗎?感謝您提前提供任何幫助。
uj5u.com熱心網友回復:
如果DAG_DATUM_VERZONDEN列的資料型別是DATE(應該是;我希望不是VARCHAR2),那么
SELECT *
FROM table_a
WHERE dag_datum_verzonden >= ADD_MONTHS (TRUNC (SYSDATE), -12)
如果您確實將日期存盤為字串(再一次,這是個壞主意),那么首先將其(字串)轉換為有效的日期值:
WHERE TO_DATE(dag_datum_verzonden, 'dd-mm-yyyy') >= ADD_MONTHS (TRUNC (SYSDATE), -12)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/441849.html
上一篇:PostgreSQL查找持續時間
下一篇:限制每個sku的回應
