在存储过程中使用CURRENT_DATE()+0;
返回的值就是2013-11-09;要是在外面直接使用 select CURRENT_DATE()+0;
得到的值就是20131109;求大神们帮忙解释什么原因,如果想在存储过程中使用该如何用CURRENT_DATE()+0这个日期函数?create procedure P_CreateID (in tableName varchar(5),out _time date)
begin
DECLARE strtime char(10);
DECLARE  _exp int default 0;
DECLARE ff VARCHAR(20);
  DECLARE len TINYINT DEFAULT 0;
  DECLARE curNo int DEFAULT 0;
set _time = CURRENT_DATE()+ 0; --各种实验得到的值就是不对
set strtime = CONVERT(_time,CHAR(10));
SELECT currentNo,noLen into curNo, len from `code` where codeName = tableName for UPDATE;

         set ff = RIGHT(POWER(10,len)+curNo+1,len);
 set BH = concat(tableName,strtime,ff);
 update Code set currentNo=currentNo+1 where codeName = tableName;
end; mysql时间函数 CURRENT_DATE()

解决方案 »

  1.   

    这个不能像sqlserver一样直接加整数的mysql> select current_date()+30;
    +-------------------+
    | current_date()+30 |
    +-------------------+
    |          20131139 |
    +-------------------+
    1 row in set (0.00 sec)
      

  2.   

    注意数据类型的转换
    int = curdate() + 0先将 curdate() 转换为数字,然后再加。而后,_time为日期型数据, 
    _time = INT, 则再一次数据类型转换。