Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/277.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.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
Php MySql如何从一个时间间隔生成一个完整的日历?_Php_Mysql_Sql - Fatal编程技术网

Php MySql如何从一个时间间隔生成一个完整的日历?

Php MySql如何从一个时间间隔生成一个完整的日历?,php,mysql,sql,Php,Mysql,Sql,我是mysql程序的新手。我请求您帮助生成一个带有某种程序的日历(每隔一天生成一行)。。。在stackoverflow上,我找到了以下函数: CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE) BEGIN WHILE dateStart <= dateEnd DO INSERT INTO mytable (mydate) VALUES (dateStart);

我是mysql程序的新手。我请求您帮助生成一个带有某种程序的日历(每隔一天生成一行)。。。在stackoverflow上,我找到了以下函数:

CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE)
    BEGIN

          WHILE dateStart <= dateEnd DO
            INSERT INTO mytable (mydate) VALUES (dateStart);
            SET dateStart = date_add(dateStart, INTERVAL 1 DAY);
          END WHILE;
        END;


    CALL filldates('2014-01-01','2014-12-31');
如果您知道如何生成此类表格,我将非常感激

其他mysql信息

innodb_version : 5.5.35-rel33.0
protocol_version : 10
slave_type_conversions 
version : 5.5.35-33.0-log
version_comment: Percona Server (GPL), Release rel33.0, Revision 61...
version_compile_machine : x86_64
version_compile_os : Linux

假设您的表至少有以下
CREATE table
语句:

CREATE mytable(
  ID INT,
  date DATE,
  Price INT
);
INSERT INTO mytable (ID, date, Price)
SELECT
    t.n, 
    DATE_ADD('2014-01-01', INTERVAL t.n DAY),
    40
FROM (
    SELECT 
        a.N + b.N * 10 + c.N * 100 AS n
    FROM
        (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
       ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
       ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) c
    ORDER BY n
) t   
WHERE
    t.n <= TIMESTAMPDIFF(DAY, '2014-01-01', '2014-12-31');
然后,您可以使用以下语句为一年中的每一天插入行:

CREATE mytable(
  ID INT,
  date DATE,
  Price INT
);
INSERT INTO mytable (ID, date, Price)
SELECT
    t.n, 
    DATE_ADD('2014-01-01', INTERVAL t.n DAY),
    40
FROM (
    SELECT 
        a.N + b.N * 10 + c.N * 100 AS n
    FROM
        (SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
       ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
       ,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) c
    ORDER BY n
) t   
WHERE
    t.n <= TIMESTAMPDIFF(DAY, '2014-01-01', '2014-12-31');

您好,谢谢您的帮助…我将您的代码粘贴到PhpMyAdmin上的SQL“Tab”中,但结果出现以下错误:#1064-您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解在“DATE_ADD”('2014-07-01',INTERVAL t.n DAY')附近使用的正确语法,我在select的第一行漏掉了一个逗号,现已修复。还有另一个输入错误,添加了fiddle。Ok似乎有效,但我与此有冲突#1136-“第1行的列计数与值计数不匹配”,您能做些什么只生成日期列值吗?将来我想使用相同的ID。感谢您的建议:DMy bad,我删除了不需要的列,留下了一个逗号,和第一次尝试的错误相同。现在更正。该睡觉了!谢谢你们男人们:D工作得很有魅力!