簡體   English   中英

Oracle SQL:每年查詢 YTD

[英]Oracle SQL: Query YTD for every year

我將如何編寫 Oracle SQL 查詢以從日期小於或等於當年這一天的表中提取每條記錄?

例如:

我的表:

日期字段
01/01/2010
12/31/2010
01/01/2021
07/21/2021

如果查詢是在 2021 年 7 月 21 日運行的,我的目標

日期字段
01/01/2010
01/01/2021
07/21/2021

您可以將月/日轉換為字符串並進行比較:

select t.*
from t
where to_char(date_field, 'MMDD') < to_char(sysdate, 'MMDD');

這是一個潛在的解決方案。

  SELECT date_field
        FROM sample_data
       WHERE date_field <=
             TO_DATE (
                  (   TO_CHAR (SYSDATE, 'MM/DD/')
                   || EXTRACT (YEAR FROM date_field))
                     ,'MM/DD/RRRR')

另一種選擇是提取月份和日期並將其作為數字進行比較:

select date_field
from your_table
-- any earlier month
where extract(month from date_field) < extract(month from sysdate)
or (
  -- any earlier or same day in this month
  extract(month from date_field) = extract(month from sysdate)
  and extract(day from date_field) <= extract(day from sysdate)
)
order by date_field

數據庫<>小提琴

使用這種方法或@Gordon 的字符串方法,您可能會從基於函數的索引中受益,但除非您的數據在年底時確實存在偏差,否則它們可能不會有幫助。

暫無
暫無

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

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