ansi sql如何选择自表中最早时间戳以来的天数
Posted
技术标签:
【中文标题】ansi sql如何选择自表中最早时间戳以来的天数【英文标题】:ansi sql how to select number of days since oldest timestamp in table 【发布时间】:2021-01-06 06:30:36 【问题描述】:如果数据累积超过 X 天,我想截断一个表
所以我想我会首先选择最旧的时间戳,大概是在时间戳列上使用 MIN 函数。
然后计算该值与 current_timestamp 之间经过的天数。
有没有统一的sql语句来做这个(经过天数的结果,不是截断)
【问题讨论】:
"ANSI" SQL 并不是特别有用。请用您真正使用的数据库标记问题。 为什么你认为你需要最旧的时间戳?我认为知道记录是否超过 X 天更有用。 (这就是“截断”意味着删除超过 X 天的记录) 也许Number of days between two dates - ANSI SQL 有帮助? 寻找统一的答案。是的,我可以在两个 sql 调用中做到这一点,但只是想知道是否有人有统一的语句解决方案 你真的只是想做一个delete from YOUR_TABLE where RECORD_DATE < (sysdate - 365);
吗? (这是 Oracle 风格的,但概念是相同的。)如果这还不够,那么我认为您需要在帖子中添加更多细节。
【参考方案1】:
在 ANSI SQL 中,这将是:
select current_timestamp - min(the_timestamp_column)
from the_table;
这会返回一个interval
值。
要删除超过 x 天的行,您可以使用带有相应 WHERE 子句的 DELETE 语句:
delete from the_table
where the_timestamp_column < current_timestamp - interval '42' day;
【讨论】:
从表中选择日期(current_timestamp - min(col)); @GiannaGiavelli,DAY()
函数不是 ANSI SQL。以上是关于ansi sql如何选择自表中最早时间戳以来的天数的主要内容,如果未能解决你的问题,请参考以下文章