我有一个 TimescaleDB 数据库,其中几个表中的一些时间戳不正确 - 我无意中给 TO_TIMESTAMP() 函数指定了毫秒数数,而不是秒数。因此,自 1970 年以来,所有这些数据点都比应有的时间长 1000 倍。通过在 where 子句中检查未来日期,我可以轻松地隔离出哪些行需要修复,但我对如何转换和替换这些不正确的时间戳有点困惑。我基本上需要获取 unix 时间表示,将其除以 1000,然后替换该行中的值,但是我的 SQL 太生疏了,无法将这个查询拼凑在一起。
我看到我可以使用 extract(epoch from ) 来获取秒数,但是我不清楚如何对每一行执行此操作,然后更新其时间戳。
编辑:
使用查询时:
UPDATE table_name
SET time = TO_TIMESTAMP(extract(epoch from time) / 1000.0)
WHERE
time > '2020-01-01 00:00:00';
我得到错误:
关系“_hyper_8_295_chunk”的新行违反了检查约束“constraint_295”