[英]Oracle SQL query to Get records less than SYSDATE
我有一個包含以下數據的表
HEADER_ID MONTH YEAR 12078 8 2026 12079 3 2024 12080 10 2022 12081 4 2026
MONTH 和 YEAR 是 VARCHAR 列。 我需要一個查詢來獲取不小於 SYSDATE(Month and Year) 的記錄。
示例:當前SYSDATE年月為2022年12月,查詢結果應該只有Header_IDs 12078,12079,12081。
任何幫助將非常感激。
將您的月/年列轉換為日期,然后進行比較:
SELECT *
FROM table_name
WHERE TO_DATE(year || '-' || month, 'YYYY-MM') >= TRUNC(SYSDATE, 'MM')
或者,您可以比較組件:
SELECT *
FROM table_name
WHERE year > EXTRACT(YEAR FROM SYSDATE)
OR ( year = EXTRACT(YEAR FROM SYSDATE)
AND month >= EXTRACT(MONTH FROM SYSDATE) )
但是,您應該考慮將表從year
和month
數字列更改為具有DATE
數據類型的單個year_month
列,並使用檢查約束CHECK ( year_month = TRUNC( year_month, 'MM' ) )
將其約束為始終是這個月的第一天。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.