1

各レコードのタイムスタンプを含むデータベース テーブルがあります。毎日、このデータベースは、gmt 真夜中 (23:59:00) の 1 分前に実行するように設定された cron によって更新されます。現在真夜中 (00:00:00) に実行するように cron を変更しているため、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 に答える