MySQL:填充日期範圍內的缺失日期
在資料管理領域,遇到包含缺失日期的資料集是很常見的。為了解決這個問題,MySQL 提供了一種解決方案來填入這些缺失日期,確保連續的日期序列。
在 MySQL 中填入缺失日期的關鍵在於利用數字表技巧。此方法涉及建立一個名為「numbers」的表,其中包含一個自動遞增的整數列,實際上是一個遞增數字清單。
接下來,用足夠的行填入「numbers」表。這確保了足夠的遞增數字範圍來涵蓋所需的日期範圍。
要建立日期列表,請使用 DATE_ADD 函數。具體來說,在以下查詢中,將「2010-06-06」和「2010-06-14」替換為您自己的開始和結束日期(確保使用 YYYY-MM-DD 格式):
<code class="language-sql">SELECT DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY) FROM `numbers` `n` WHERE DATE_ADD('2010-06-06', INTERVAL `n`.`id` -1 DAY) < '2010-06-14';</code>
使用此查詢的結果作為中間表,根據時間部分對原始資料表執行 LEFT JOIN:
<code class="language-sql">SELECT `x`.`ts` AS `timestamp`, COALESCE(`y`.`score`, 0) AS `cnt` FROM (SELECT DATE_FORMAT(DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY), '%m/%d/%Y') AS `ts` FROM `numbers` `n` WHERE DATE_ADD('2010-06-06', INTERVAL `n`.`id` - 1 DAY) < '2010-06-14') `x` LEFT JOIN `your_table` `y` ON DATE(`y`.`date_column`) = DATE(`x`.`ts`);</code>
為了保持日期格式,請將上面的 ts 欄位包裝在 DATE_FORMAT 函數中:
<code class="language-sql">DATE_FORMAT(`x`.`ts`, '%d.%m.%Y') AS `timestamp`</code>
透過執行這些步驟,您可以有效地填入 MySQL 資料集中的缺失日期,確保對所需日期範圍的無縫表示。
以上是如何使用數位表填入 MySQL 資料集中的缺失日期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!