1

我有一个数据库表,其中包含每条记录的时间戳。每天这个数据库都会被一个设置为在格林威治标准时间午夜 (23:59:00) 前 1 分钟运行的 cron 更新。我们正在将 cron 更改为现在恰好在午夜 (00:00:00) 运行,因此我需要将在 23:59 记录的所有字段更新到第二天的 00:00 (2013-05-21 23:59) :00 应更新为 2013-05-22 00:00:00)。

更新脚本被设置为在脚本启动时捕获时间戳,但因为它写得不好,它没有考虑秒,所以有些记录的开始时间是 2013-05-21 23:59:01,有些可能是 2013- 05-20 23:59:02 甚至 2013-05-19 23:59:03。所有这些都需要更新到第二天的 00:00:00。

有数千条其他记录未由 cron 更新,因此具有随机时间戳。这些记录需要不受影响。例如 2013-05-19 23:13:47、2013-05-19 02:50:56 和 2013-05-19 16:42:13 都应该保持不变。

我认为这篇文章中的以下代码与我正在寻找的内容有些相似,但是经过一些谷歌搜索和测试我自己并没有太多运气。

UPDATE table
 SET `time` = CASE
              WHEN CURRENT_TIMESTAMP>='23:59:00' 
              THEN CURRENT_TIMESTAMP + INTERVAL 1 MINUTE
              ELSE CURRENT_TIMESTAMP END
4

1 回答 1

1

试试这个查询 -

UPDATE
  table
SET
  `time` = DATE(`time`) + INTERVAL 1 DAY
WHERE
  TIME(`time`) >= '23:59:00'
于 2013-05-22T06:17:01.167 回答