带时间戳的 Vertica 比较运算符

roy*_*roy 2 database vertica

我在 Vertica 表中有十亿条记录,timestamptz 数据类型中有 times_tamp。我想在一个语句中删除超过 90 天的记录。我该怎么做呢 ?

Ker*_*mit 5

最佳做法是将日期明确定义为查询的一部分:

DELETE FROM [schema].table WHERE times_stamp <= '2014-05-06';
Run Code Online (Sandbox Code Playgroud)

但是,您可以使用以下方法动态完成此操作:

DELETE FROM [schema].table WHERE DATEDIFF(day, times_stamp, SYSDATE()) >= 90;
Run Code Online (Sandbox Code Playgroud)

这将删除天差大于或等于 90 的行。

我建议在SELECT删除这些行之前使用该谓词来验证被删除的行,以及使用事务。

考虑在将来使用分区,因为删除行的成本很高(需要重新组织容器)。例如,如果您按月分区,您将能够立即删除这些容器。