0

我有一个表 t,其中有一列“日期”,其类型为“日期”:

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

我只想获取 CURRENT_DATE / SYSDATE 减去 2 年为真的条目。所以结果应该是 (CURRENT_DATE / SYSDATE = "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!

4

1 回答 1

0

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

看起来 column 的数据类型有问题t.date

什么describe t;给你看?

UPD。

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

SELECT *
FROM t
WHERE t.date >= add_years (sysdate, -2)
--WHERE years_between (sysdate, t.date) >= 2
于 2021-01-05T10:38:41.660 回答