我在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;
答案 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`
);
...