我有一个表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