簡體   English   中英

Oracle SQL 查詢獲取小於 SYSDATE 的記錄

[英]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) )

但是,您應該考慮將表從yearmonth數字列更改為具有DATE數據類型的單個year_month列,並使用檢查約束CHECK ( year_month = TRUNC( year_month, 'MM' ) )將其約束為始終是這個月的第一天。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM