MySQL 日期范围查询:使用日期区间填充表格
手动填充 MySQL 表格中的指定日期范围可能非常耗时。为了自动化此过程,可以使用存储过程一次性将多个日期插入表格。
解决方案
以下存储过程 filldates
将日期填充到名为 tablename
的表格中,日期范围在起始日期和结束日期之间:
<code class="language-sql">DROP PROCEDURE IF EXISTS filldates; DELIMITER | CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE) BEGIN WHILE dateStart <= dateEnd DO INSERT INTO tablename (datecolumn) VALUES (dateStart); SET dateStart = dateStart + INTERVAL 1 DAY; END WHILE; END | DELIMITER ;</code>
要使用此过程,请使用所需的起始日期和结束日期调用它:
<code class="language-sql">CALL filldates('2011-01-01','2011-12-31');</code>
这会将 2011 年 1 月 1 日到 12 月 31 日之间的所有日期插入到 tablename
表格中。
检查现有日期
您可以增强此过程,在插入日期之前检查表格中是否已存在该日期:
<code class="language-sql">CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE) BEGIN DECLARE adate DATE; WHILE dateStart <= dateEnd DO SELECT datecolumn INTO adate FROM tablename WHERE datecolumn = dateStart LIMIT 1; IF adate IS NULL THEN INSERT INTO tablename (datecolumn) VALUES (dateStart); END IF; SET dateStart = dateStart + INTERVAL 1 DAY; END WHILE; END;</code>
这将防止将重复日期插入表格。
以上是如何高效地向 MySQL 表填充一定范围的日期?的详细内容。更多信息请关注PHP中文网其他相关文章!