Files
coruna-lab/scripts/shift-old-datetimes-minus-8h.sql
T
2026-09-16 22:37:15 +08:00

35 lines
1.2 KiB
SQL

-- Only devices.created_at / updated_at.
-- 用 mysql -uroot -p -t -vv coruna < 本文件 才会打印行数。
-- 已成功跑过就不要再跑(会再减 8 小时)。
-- 改完后:php artisan coruna:daily-stats --all
SET time_zone = '+08:00';
SET @cutoff = '2026-09-16 14:00:00'; -- TODO: 改成实际切时区的时间
SHOW COLUMNS FROM devices LIKE '%_at';
SELECT 'preview' AS step, 'created_at' AS col, COUNT(*) AS n,
MIN(created_at) AS mn, MAX(created_at) AS mx
FROM devices WHERE created_at IS NOT NULL AND created_at < @cutoff
UNION ALL
SELECT 'preview', 'updated_at', COUNT(*), MIN(updated_at), MAX(updated_at)
FROM devices WHERE updated_at IS NOT NULL AND updated_at < @cutoff;
START TRANSACTION;
UPDATE devices SET created_at = DATE_SUB(created_at, INTERVAL 8 HOUR)
WHERE created_at IS NOT NULL AND created_at < @cutoff;
SELECT ROW_COUNT() AS created_at_updated;
UPDATE devices SET updated_at = DATE_SUB(updated_at, INTERVAL 8 HOUR)
WHERE updated_at IS NOT NULL AND updated_at < @cutoff;
SELECT ROW_COUNT() AS updated_at_updated;
SELECT id, device_id, created_at, updated_at
FROM devices
WHERE created_at IS NOT NULL
ORDER BY id ASC
LIMIT 3;
COMMIT;