如何在 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 < 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 天的所有记录的主要内容,如果未能解决你的问题,请参考以下文章