2009-08-12 117 views
2

所以我得在MySQL一个简单的查询,设置一个新成员的截止日期,一旦他们缴纳会费:MySQL DATE_ADD - 日期错误?

UPDATE members SET joined=CURDATE(), expires=DATE_ADD(CURDATE(), INTERVAL 1 YEAR), active='1' WHERE id=1000 

该查询已运行超过200倍,通常与正确的结果 - 当前日期放入加入的字段中,并在expires字段中从该日期开始一年。但是,在大约10个实例中,到期日期已被设置为00-00-0000,没有明显的解释。我开始将查询写入文本文件,以确保语法正确,并且我没有遗漏任何内容 - 而且我没有 - 对于每个查询来说,查询(只有ID不同),这些查询,那些没有。

我唯一能想到的就是MySQL的DATE_ADD函数一定有问题。有没有其他人经历过这样的事情?

更新: 我应该补充说明在过期日期不正确的情况下,连接字段与当前日期是否正确。

  • 我正在使用MySQL 5.0.81。
  • 没有触发器。
  • 该表使用的是MyISAM。

重要更新: 我是一个白痴 - 当我说11 - 30 - 1999年,这实际上不是什么数据库中。我心不在焉地写道,但实际上数据库包含的值00-00-0000 - 11-30-1999就是它如何通过PHP呈现在我的页面上。对不起,希望这会让这个问题变得更加困难。

+0

您能否为不正确的行发布'joined'的值? – Quassnoi 2009-08-12 17:00:46

+0

是的 - 最近两次同时发生。加入实际上只存储日期(都是'8-4-05'),但该行在查询运行之前被创建,并且是时间戳 - '2009-08-04 22:38:20'。另一个是在此之后几秒钟。 – Joel 2009-08-12 17:23:19

回答

0

只是一个念头....那些“错误”的日期并没有发生闰年日期,他们......例如2月29日?

它应该没关系,但它可能是一个错误。

+0

不,已创建的新记录的当前日期为现在(2009年7月/ 8月),并在2010年到期。 – Joel 2009-08-12 16:37:48