DECLARE `checkout` DATETIME;//酒店结账的时间
DECLARE `rz`   INT;   //打算入住的小时数,钟点房
set `checkout` = (NOW()+INTERVAL  `rz`+2 HOUR) ;//酒店优惠2个小时,算出要哪个时间结账收房
上面这个checkout总是NULL的。或者是0000-00-00 00:00:00。不知道什么原因啊。

解决方案 »

  1.   

    因为你没有对rz赋值。DECLARE `checkout` DATETIME;//酒店结账的时间
    DECLARE `rz`   INT ;   //打算入住的小时数,钟点房
    set rz = 10;
    set `checkout` = (NOW()+INTERVAL  `rz`+2 HOUR) ;//酒店优惠2个小时,算出要哪个时间结账收房
      

  2.   

    变量默认是NULL,给变量赋值即可
    SET RZ=值
      

  3.   

    NULL值和其他值进行任何运算,都得到NULL。
      

  4.   

    不错这条的确是这样!
    不过要麻烦各位一下了再。
    因为还有下一个,我最开始以为问题都是一样的。所以只贴了这个。
    下一个是:DECLARE `checkout2` DATETIME;
    DECLARE `rz` INT; //打算入住的小时数,钟点房
    DECLARE `checkout3` DATETIME;set rz = 10;SELECT checkout_date INTO  `checkout2`  FROM `yuhua_user` WHERE user_account = `user2` ; //取得checkout2,经验证,这里checkout2是有值的。set `checkout3` = (`checkout2`+INTERVAL `rz` -24 HOUR);
    上面的checkout2和rz都是有值的,我特意检验了一下,可是checkout3却是NULL.我开始以为是同样的问题。谁知道这个和上面的不很一样。请大家帮忙看看。回答完马上结贴,不好意思。
      

  5.   

    还有,数据库里checkout_date 字段当时就是用now()赋值进去的。所以我开始以为应该和now()的用法差不多。
      

  6.   

    set `checkout3` = DATE_ADD(`checkout2`,INTERVAL `rz` -24 HOUR);
      

  7.   

    DECLARE `checkout2` DATETIME;
    DECLARE `rz` INT; //打算入住的小时数,钟点房
    DECLARE `checkout3` DATETIME;set rz = 10;SELECT checkout_date INTO `checkout2` FROM `yuhua_user` WHERE user_account = `user2` ; //取得checkout2,经验证,这里checkout2是有值的。select `checkout2`;
    select rz;
    set `checkout3` = (`checkout2`+INTERVAL `rz` -24 HOUR);
    select `checkout3`;
    都打印出来看看。里面应该有NULL值。