MySQL存储过程没有';行不通

MySQL存储过程没有';行不通,mysql,stored-procedures,Mysql,Stored Procedures,为什么此语句返回NULL DROP PROCEDURE IF EXISTS hr.Test; CREATE PROCEDURE hr.`Test` ( IN `empID` BIGINT(20) , IN untill date , IN `salaryType` INT(10) ) MODIFIES SQL DATA BEGIN select untill; END;

为什么此语句返回
NULL

DROP PROCEDURE IF EXISTS hr.Test;
CREATE PROCEDURE hr.`Test`
           (
             IN `empID` BIGINT(20)
           , IN untill date
           , IN `salaryType` INT(10)
           )
    MODIFIES SQL DATA
BEGIN
  select untill;
END;

call Test(2, '2014-01', 2);

这很奇怪,因为当我想返回
empID
salaryType
的值时,它就工作了

因为
'2014-01'
不是日期,
'2014-01-01'
将是一个日期。您缺少日期的日期部分。

原因很简单,因为
'2014-01'
是无效日期,因此它返回
null
。要证明这一点,请尝试下面的查询,它将返回
null

select cast('2014-01' as date)
天哪,多么集中啊:),