使用触发器比较日期出错

时间:2014-04-13 00:29:30

标签: mysql datetime triggers

我试图运行以下查询:

[SQL]INSERT INTO `Games` VALUES ('18', '21', '101', '98', '2013-10-30', '1190', '2013');
[Err] 1644 - date error

我有一个触发器:

if (New.date < 1900-01-01 or New.date > 2015-01-01) then 
signal sqlstate '45000' set message_text = "date error"; 
End if;

其中games.date显然是第五个领域。

我不确定为什么我会收到此错误,因为它看起来应该可以正常工作。

1 个答案:

答案 0 :(得分:1)

1900-01-01不是约会对象 - 它是由减号分隔的三个整数,并将评估为1982年。至少,您想要用单引号将其包围起来使它成为一个字符串文字,但我也不建议 - 你应该总是明确地将字符串转换为具有适当格式的日期:

if (New.date < STR_TO_DATE('1900-01-01', '%Y-%m-%d') or 
    New.date > STR_TO_DATE('2015-01-01', '%Y-%m-%d')) then 
    signal sqlstate '45000' set message_text = "date error"; 
End if;
相关问题