如何在 h2 中找到时间戳超过 120 天的所有记录

Posted

技术标签:

【中文标题】如何在 h2 中找到时间戳超过 120 天的所有记录【英文标题】:How do I find all records with timestamp older than 120 days ago in h2 【发布时间】:2021-01-25 22:24:17 【问题描述】:
select * from myTable where REC_CREA < CURRENT_TIMESTAMP() - 120 days

我在从 db2 sql 转换为 h2 时遇到问题。如何在 h2 中获取超过 120 天的记录?

【问题讨论】:

使用REC_CREA &lt; DATEADD(DAY, -120, CURRENT_TIMESTAMP()) 未找到 DATE_SUB 函数 你的列的数据类型到底是什么? 【参考方案1】:

您可以使用DATEADD()。例如:

select * 
from t 
where rec_crea < dateadd(day, -120, current_timestamp());

示例脚本:

create table t (name varchar(10), rec_crea datetime);

insert into t (name, rec_crea) values ('Anne', '2020-06-01');
insert into t (name, rec_crea) values ('Louisa', '2021-01-07');

结果:

NAME        REC_CREA       
----  ---------------------
Anne  2020-06-01 00:00:00.0

【讨论】:

【参考方案2】:

如果您使用最新版本的 H2,请使用符合标准的

select * from myTable where REC_CREA < LOCALTIMESTAMP - INTERVAL '120' DAY

对于TIMESTAMP 列,(CURRENT_TIMESTAMP - INTERVAL '120' DAY 对于TIMESTAMP WITH TIME ZONE 列或CURRENT_DATE - INTERVAL '120' DAY 对于DATE 列)。

如果您使用 H2 1.4.197 或更早版本,请使用

select * from myTable where REC_CREA < CURRENT_TIMESTAMP - 120

不要在较新的版本中使用这种遗留语法,它不受官方支持。

【讨论】:

以上是关于如何在 h2 中找到时间戳超过 120 天的所有记录的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 在下一个 h2 之前解析 HTML 并在一个 h2 之后获取所有 h3

当“参数列表太长”时如何删除所有超过 3 天的文件?

如何保留超过 5 天的查询日志?

如何从 H2 中的时间戳列中提取日期

Spark Streaming:如何获取一天的时间戳计数?

如何从 iPhone 的文档目录中删除超过两天的文件