【问题标题】:How do I find all records with timestamp older than 120 days ago in h2如何在 h2 中找到时间戳超过 120 天的所有记录
【发布时间】: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 函数
  • 你的列的数据类型到底是什么?

标签: sql h2


【解决方案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
    

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

    【讨论】:

      猜你喜欢
      • 2013-08-28
      • 2019-03-08
      • 1970-01-01
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 2012-06-30
      • 1970-01-01
      • 2015-05-15
      相关资源
      最近更新 更多