mysql存储过程中的日期值错误

mysql存储过程中的日期值错误,mysql,sql,node.js,stored-procedures,Mysql,Sql,Node.js,Stored Procedures,来自客户端javascript/angular的我的请求负载 js代码是 错误返回为 存储过程: 本质上,它采用from和to日期,并根据差异创建行数 CREATE DEFINER=`root`@`localhost` PROCEDURE `day`(start DATE, end DATE, event_id INT) BEGIN WHILE start <= end DO INSERT INTO day(date, event_id) VALUES(start,

来自客户端javascript/angular的我的请求负载

js代码是

错误返回为

存储过程:

本质上,它采用from和to日期,并根据差异创建行数

CREATE DEFINER=`root`@`localhost` PROCEDURE `day`(start DATE, end DATE, event_id INT)
BEGIN
    WHILE start <= end DO
        INSERT INTO day(date, event_id) VALUES(start, event_id);
        SET start = start + 1;
    END WHILE;
END
我猜该日期存储为日期。但开始不是,可能只是一个看起来像日期的整数

如果是这样,这将解决您的问题:

WHILE start <= end DO
    INSERT INTO day(date, event_id) VALUES(start, event_id);
    SET start = date_add(@tart, interval 1 day);
END WHILE;
在查询中应使用“yyyy-mm-dd”格式,而不是“mm/dd/yyyy”。因为您的过程参数是日期类型的

您的查询应该是这样的

SET @start = '2015-06-16'; SET @end = '2015-06-18'; SET @event_id = 3; CALL day(@start, @end, @event_id);

开始和结束是什么样子的?它过去使用start=start+1很好,我确实应用了你的date\u add方法,但仍然是相同的错误将日期格式更改为YYYY-MM-DD格式,所以是“2015-06-16”和“2015-05-18”。这是美国的,他们希望看到MM-DD-YYYY,但它确实解决了问题,我想知道为什么以前它会工作,ISO标准和MySQL的标准是YYYY-MM-DD。请尝试使用该格式,看看是否有效。如果是,则使用用户输入的格式为数据库创建适当的日期格式。请在存储过程查询中添加一些日期格式代码,日期将为mm/dd/yyyy
CREATE DEFINER=`root`@`localhost` PROCEDURE `day`(start DATE, end DATE, event_id INT)
BEGIN
    WHILE start <= end DO
        INSERT INTO day(date, event_id) VALUES(start, event_id);
        SET start = start + 1;
    END WHILE;
END
SET @start = '06/16/2015'; SET @end = '06/18/2015'; SET @event_id = 3; CALL day(@start, @end, @event_id);
WHILE start <= end DO
    INSERT INTO day(date, event_id) VALUES(start, event_id);
    SET start = date_add(@tart, interval 1 day);
END WHILE;
var query = "SET @start = str_to_date('" + request.body.from  + "', '%m/%d/%Y'); \
                         SET @end = str_to_date('" + request.body.to + "', '%m/%d/%Y'); \
                         SET @event_id = " + rows.insertId + "; \
                         CALL day(@start, @end, @event_id);";
SET @start = '2015-06-16'; SET @end = '2015-06-18'; SET @event_id = 3; CALL day(@start, @end, @event_id);