Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建mysql日期范围_Mysql_Date - Fatal编程技术网

创建mysql日期范围

创建mysql日期范围,mysql,date,Mysql,Date,似乎找不到我想要的答案 我想在表中创建从2010-11-01到2015-01-01的日期范围 2010-11-01 2010-11-02 2010-11-03 等等 列数据类型为“日期” 谢谢你当然可以采取暴力手段 set @d = cast('2010-11-01' as date); while (@d < '2015-01-02') do insert into YourTable (YourColumn) values (

似乎找不到我想要的答案

我想在表中创建从2010-11-01到2015-01-01的日期范围

2010-11-01 2010-11-02 2010-11-03 等等

列数据类型为“日期”


谢谢

你当然可以采取暴力手段

set @d = cast('2010-11-01' as date);

while (@d < '2015-01-02') do
    insert into YourTable 
        (YourColumn)
        values
        (@d);

    set @d = date_add(@d, interval 1 day);
end while;
set@d=cast('2010-11-01'为日期);
而(@d<'2015-01-02')是
插入到您的表中
(你的专栏)
价值观
(@d);
设置@d=日期添加(@d,间隔1天);
结束时;
删除过程(如果存在)日期填充;
分隔符|
创建过程日期填充(日期开始日期、日期结束日期)
开始

虽然dateStart意识到这是一个旧线程,但我发现它很有用,并建议将SET AUTOCOMMIT=0添加到Brad的过程中。这将大大提高性能(在我的系统上;从2小时提高到4秒)。更多信息可在此处找到:


@Joe:
仅允许在BEGIN中声明。。。结束复合语句,并且必须在其开始处,在任何其他语句之前(per--我想这应该是一个过程,尽管你的思路是对的)@Brad:谢谢。编辑后的答案。@Joe:我在while条件下仍然得到一个语法错误。这对你有用吗?@Brad:我现在没有地方测试。正如您之前指出的,这可能需要封装在一个进程中。@Joe/@mrlayance:我正在处理它。发布此答案后,我立即停止,但我将继续玩,看看是否可以绕过此错误。请查看我发布的答案。不使用过程也可以,请参阅此处@Joe:没问题,很乐意帮助!;-)
DROP PROCEDURE IF EXISTS datespopulate;
DELIMITER |
CREATE PROCEDURE datespopulate(dateStart DATE, dateEnd DATE)
BEGIN
  WHILE dateStart <= dateEnd DO
    INSERT INTO datetable (d) VALUES (dateStart);
    SET dateStart = date_add(dateStart, INTERVAL 1 DAY);
  END WHILE;
END;
|
DELIMITER ;
CALL datespopulate('2010-11-01','2015-01-01');