【问题标题】:Adding time to rows with a specific timestamp in a database向数据库中具有特定时间戳的行添加时间
【发布时间】:2013-05-17 01:46:14
【问题描述】:

我有一个数据库表,其中包含每条记录的时间戳。每天,这个数据库都会由一个设置为在格林威治标准时间午夜 (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 都应该保持不变。

我认为this post 中的以下代码与我正在寻找的内容有些相似,但经过一些谷歌搜索和自我测试后,我运气不佳。

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

【问题讨论】:

  • 时间可以是'23:59:15'吗?
  • 23:59:xx 的任何时间都可以安全地更新到午夜,尽管我认为如果重要的话,我发现运行的最新 cron 发生在 23:59:04。

标签: mysql database timestamp sql-update


【解决方案1】:

试试这个查询 -

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

【讨论】:

    猜你喜欢
    • 2017-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多