首頁 > 資料庫 > mysql教程 > 如何在沒有臨時表或變數的情況下產生日期系列?

如何在沒有臨時表或變數的情況下產生日期系列?

Barbara Streisand
發布: 2024-12-06 12:22:12
原創
812 人瀏覽過

How to Generate a Date Series Without Temporary Tables or Variables?

產生一系列沒有臨時表或變數的日期

儘管具有預定義日期範圍的表可用,但這種方法被認為不是最佳的。我們如何在不借助臨時表或變數操作的情況下產生指定時間間隔內的一系列日期?

考慮以下場景:您的應用程式需要一個為每個日期傳回一行的報表,而不管可用資料如何。為了實現這一點,可以建立一個簡單的查詢:

select dates.date, sum(sales.amount)
from <series of dates between X and Y> dates
left join sales on date(sales.created) = dates.date
group by 1
登入後複製

為了避免創建包含大量日期的表,建議使用替代解決方案:

select * from 
(select adddate('1970-01-01',t4*10000 + t3*1000 + t2*100 + t1*10 + t0) gen_date from
 (select 0 t0 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t0,
 (select 0 t1 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t1,
 (select 0 t2 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t2,
 (select 0 t3 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t3,
 (select 0 t4 union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9) t4) v
where gen_date between '2017-01-01' and '2017-12-31'
登入後複製

此查詢有效地生成一系列指定範圍內的日期,無需建立單獨的表或設定變數。

以上是如何在沒有臨時表或變數的情況下產生日期系列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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