在SQL 結果中填入空白日期
查詢MySQL 以從表中匯出日期和計數時,日期範圍中的間隙可能會留下一些空白下落不明的日子。要使用零計數條目填補這些空白,一種簡單的方法是利用伺服器端預存程序。
使用預存程序的伺服器端填入
下列預存程序建立一個暫存資料表,其中包含指定範圍內的所有可能日期。然後,該表與查詢結果左連接,以填入缺少的日期。
create procedure sp1(d1 date, d2 date) declare d datetime; create temporary table foo (d date not null); set d = d1 while d <= d2 do insert into foo (d) values (d) set d = date_add(d, interval 1 day) end while select foo.d, count(date) from foo left join table on foo.d = table.date group by foo.d order by foo.d asc; drop temporary table foo; end procedure
此程序採用兩個日期作為輸入,並產生臨時表 foo,其中包含它們之間的所有潛在日期。然後,它與原始查詢執行左連接,以包含所有缺失的日期並返回完整的資料集。
客戶端檢查(可選)
此外,一個簡單的檢查可以在客戶端(例如Perl)實現,以處理當前日期不等於前一個日期加一天的情況。在這種情況下,可以將其他計數為零的字串加入輸出。
以上是如何用零計數填入 SQL 查詢結果中的缺失日期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!