在 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;
在 Perl 端
如果 Perl 模組如 Date:: y 可用,您可以迭代日期範圍並檢查查詢結果中的空日期。如果找到,請為該日期新增零計數條目。
use Date::y; # Get the date range my $d1 = '2008-08-05'; my $d2 = '2008-08-07'; # Iterate over the date range my $date = Date::y->date($d1); while ($date <= Date::y->date($d2)) { # Check if the date exists in the query results if (! exists $results{$date}) { # Add the date with a zero count $results{$date} = 0; } $date = $date->next; }
以上是如何填入 SQL 查詢結果中缺少的日期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!