如何筛选CURRENT_DATE/SYSDATE-2年



我有一个表t,它有一列"日期";其具有类型";日期:

date
2018-10-01
2019-02-03
2020-01-01
2021-01-01

我只想得到CURRENT_DATE/SYSDATE减去2年为真的条目。因此结果应该是(CURRENT_DATE/SYDATE="2021-05-01":

date
2019-02-03
2020-01-01
2021-01-01

我的代码:

SELECT *
FROM t
WHERE YEAR(t.date) >= ADD_YEARS(TRUNC(CURRENT_DATE), -2)

但这给了我错误

不支持功能:不可比较的类型:DECIMAL(4,0(和DATE!

将SYSDATE与一起使用

SELECT *
FROM t
WHERE YEAR(t.date) >= ADD_YEARS(TRUNC(SYSDATE), -2)

给出错误

不支持功能:不可比较的类型:DECIMAL(4,0(和DATE!

我试过了https://stackoverflow.com/a/28888880/4435175带有

SELECT *
FROM t
WHERE YEAR(t.date) >= add_months( trunc(sysdate), -12*2 )

但这给了我同样的错误

不支持功能:不可比较的类型:DECIMAL(4,0(和DATE!

sysdate已经返回您的日期。无需截断。

t.date的数据类型似乎有问题。

describe t;向您展示了什么?

UPD

我在这里看到两个选项。第一个对我来说更可取,因为它不将函数应用于每个t.date值。

SELECT *
FROM t
WHERE t.date >= add_years (sysdate, -2)
--WHERE years_between (sysdate, t.date) >= 2

相关内容

  • 没有找到相关文章

最新更新