查询的日期变量赋值

时间:2014-06-29 03:48:49

标签: mysql triggers

我在MySQL触发器中分配date类型的变量时遇到了一些麻烦。当我尝试将我的变量与当前日期进行比较时,它无法正常工作。

    CREATE TRIGGER actualizar_numero_sesiones AFTER INSERT ON registroingresos
    FOR EACH ROW
    BEGIN 
    DECLARE d date;
    DECLARE vigente INT(11);
    DECLARE vencido INT(11);
    DECLARE state varchar(10);
    select p.fecha_fin into d from compra_paquete cp, paquetes p where cp.ci = new.ci AND         p.idpaquete = cp.idpaquete;
    SET vencido = d > CURDATE();
    SET vigente = d < CURDATE();
    IF (vencido = 1) THEN
      SET state = 'Vencido';
    IF ELSE(vigente = 1) THEN 
       SET state = 'Vigente';
    END IF;
END;

我指定变量d的查询是来自&#34; paquetes&#34;的日期值。表格问题是d变量的分配不正常,因为我知道比较的日期fecha_fin =&#39; 2012-04-06&#39;和CURDATE()在fecha_fin之后,状态值应为&#34; vencido&#34;但它是&#34; vigente&#34;

1 个答案:

答案 0 :(得分:0)

变量status是什么?

您可以使用以下语句稍微简化一下:

...
SET `state` := (
    SELECT IF(`p`.`fecha_fin` > CURDATE(), 'Vencido', 'Vigente')
    FROM `compra_paquete` `cp`, `paquetes` `p`
    WHERE `cp`.`ci` = NEW.`ci` AND `p`.`idpaquete` = `cp`.`idpaquete`
);
...

SQL Fiddle example