如何在将来将MySQL中的值增加到某个时间



我正在尝试更新表中的DATETIME字段。我想要的是它在到期前总是有三个小时的时间。

我当前的代码是:

UPDATE mindcore_sessions
  SET session_time = DATE_ADD(session_time, INTERVAL 3 HOUR)
  WHERE session_id = '$sessionId';

示例值为:2013-02-11 00:00:00。如果我运行此查询,它将变为:2013-02-11 03:00:00。这是正确的但是,如果再次运行,它将变为2013-02-11 06:00:00,依此类推。

我想要的是始终只提前三个小时。这很难解释,但我只希望它在再次运行时保持不变。如果1分钟后再次运行,我希望它只增加一分钟。

如果这个问题很冗长,我很抱歉,但我完全困惑了(而且已经晚了!)。

感谢:)

不要在最后一个session_time上加三(3)小时,而是在NOW():上加三个小时

update mindcore_sessions
set session_time = DATE_ADD(NOW(), INTERVAL 3 HOUR)
where session_id = '$sessionId';`

将您的间隔添加到NOW(),而不是添加到当前值:

UPDATE mindcore_sessions SET session_time = DATE_ADD(NOW(), INTERVAL 3 HOUR) WHERE session_id = '$sessionId';

在mysql中无法知道以前是否执行过相同的查询。

唯一可能的解决方案是将原始值保存在一个额外的列中,并使用该列检查该值是否在过去发生了更改。

如果您希望值从开始提前3小时,您可以简单地执行以下操作:

DATE_ADD(NOW(), INTERVAL 3 HOUR)

相关内容

  • 没有找到相关文章

最新更新