【问题标题】:MySQL DATE_ADD - date is wrong?MySQL DATE_ADD - 日期错误?
【发布时间】:2023-03-22 03:53:01
【问题描述】:

所以我在 MySQL 中有一个简单的查询,它会在新成员缴纳会费后设置他们的到期日期:

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 将它呈现到我的页面上的方式。对此感到抱歉,希望这将使这个问题不那么难以解决。

【问题讨论】:

  • 能否请您为不正确的行发布joined 的值?
  • 是的 - 最近的两个同时发生。实际上,joined 仅存储日期(均为“8-4-05”),但该行是在此查询运行之前创建的,并且带有时间戳 - “2009-08-04 22:38:20”。另一个是在此之后几秒钟。

标签: php sql mysql


【解决方案1】:

只是一个想法......那些“错误”的日期并没有碰巧是闰年的日期......例如 2 月 29 日?

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

【讨论】:

  • 否,已创建的新记录的当前日期为现在(2009 年 7 月/8 月)并在 2010 年到期。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-16
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多