mysql - 向数据库中具有特定时间戳的行添加时间

标签 mysql database timestamp sql-update

我有一个数据库表,其中包含每条记录的时间戳。这个数据库每天都由一个 cron 更新,该 cron 被设置为在 gmt 午夜 (23:59:00) 前 1 分钟运行。我们正在将 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 都应该保持不变。

我认为以下代码来自 this post有点符合我要找的东西,但经过谷歌搜索和 self 测试后,我运气不佳。

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

最佳答案

试试这个查询-

UPDATE
  table
SET
  `time` = DATE(`time`) + INTERVAL 1 DAY
WHERE
  TIME(`time`) >= '23:59:00'

关于mysql - 向数据库中具有特定时间戳的行添加时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16684464/

相关文章:

mysql使用between查找现在和 future 一年之间的数据

mysql - 数据库中用户全名的典型长度应该是多少

linux - 编写linux脚本将1970年1月1日之前的时间戳转换为1970年2月2日

mysql - 为什么在 DEFAULT 子句中只能有一个带有 CURRENT_TIMESTAMP 的 TIMESTAMP 列?

postgresql - PostgreSQL中带/不带时区的时间戳之间的区别

mysql - 数据库规范化: How can I tabulate the data?

mysql - XAMPP MySQL 无法在 Mac Mavericks 版本 10.9.3 上启动

mysql - 如何按同时具有选择和计数的字段进行分组

c# - ElasticSearch NEST 术语查询未返回结果

ruby - 存储类别的数据模型(多个父节点)