首頁 > 資料庫 > mysql教程 > 如何在 Oracle 中產生跨多個日期範圍的日期?

如何在 Oracle 中產生跨多個日期範圍的日期?

Linda Hamilton
發布: 2025-01-02 15:06:42
原創
942 人瀏覽過

How Can I Generate Dates Across Multiple Date Ranges in Oracle?

處理多個日期範圍以產生日期

在兩個日期之間產生日期是各種程式設計場景中常見的情況。雖然為單一範圍產生日期很簡單,但擴展此功能以處理多個範圍可能會帶來挑戰。

請考慮下表,其中每行代表一個日期範圍:

ID START_DATE END_DATE
101 April 1, 2013 April 10, 2013
102 May 10, 2013 May 12, 2013

預期輸出應產生每個範圍內的單獨日期:

ID Dates
101 April 1, 2013
101 April 2, 2013
... ...
101 April 10, 2013
102 May 10, 2013
102 May 11, 2013
102 May 12, 2013

Oracle提供了一個巧妙的解決方案來實現此目的result:

select 
  A.ID, 
  A.START_DATE + (delta - 1) dt
from 
  t_dates A, 
  (
     select level-1 as delta 
     from dual 
     connect by level-1 <= (
       select max(end_date - start_date) from t_dates
     )
  )
where A.START_DATE + (delta - 1) <= A.end_date
order by 1, 2;
登入後複製

delta 列採用Oracle 的CONNECT BY 層次結構會產生從 1 到表中結束日期和開始日期之間的最大差異的整數序列。 A.START_DATE (delta - 1) 表達式將結果中每筆記錄的開始日期增加適當的增量。 WHERE 子句過濾掉超出目前日期範圍結束日期的結果。

享受這個在 Oracle 中跨多個範圍生成日期的優雅解決方案!

以上是如何在 Oracle 中產生跨多個日期範圍的日期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板