我有大量数据被错误地加载到 SQL 数据库中(如果重要的话,它是 Vertica DB)。
每行都有一个 id 和一个时间戳。数据是按顺序加载的(顺序 ID),但是时间戳转换不正确,导致所有时间都被加载为“AM”。
这是数据库中内容的简化示例:
id | time
001 | 2013-01-01 00:00:01 // Jan 1st
002 | 2013-01-01 01:20:00
... | ...
500 | 2013-01-01 11:59:59
501 | 2013-01-01 00:00:01 // should be 12:00:01 (PM)
502 | 2013-01-01 00:10:00 // should be 12:10:00 (PM)
... | ...
750 | 2013-01-01 11:59:59 // should be 23:59:59 (PM)
751 | 2013-01-02 00:00:00 // next day (the 2nd)
我需要一个查询,它可以找到我需要在时间上增加 12 小时的行的 ID 范围。例如,对于上面的示例数据,返回的行应该是501, 750
. 这样我可以在 id >= 501 和 <= 750 的情况下添加 12 小时。
基本上,我需要某种回顾+展望机制。以编程方式,这意味着遍历每一行并检查日期的日期是否与下一行相同,并检查时间是否早于前一行。但是,我确信在 SQL 中有一些更好的方法可以做到这一点......