SELECT LAST_MAINTAIN, PLANE_ID
FROM PLANE
WHERE MONTHS BETWEEN(
(TO_DATE('sysdate', 'MM/DD/YYYY'),
TO_DATE('LAST_MAINTAIN', 'MM/DD/YYYY')))
>24;
我正在尝试从Plane表中选择Last_Maintain,一个日期字段,并返回在今天的日期和上次维护之间有2年的结果。有谁知道什么是错的?我有一种感觉,我错误地使用了几个月,但我不确定。感谢
编辑:调整sysdate和Last_Maintain的位置,仍然错误地说我错过了一个括号(右),即使我经历了所有括号而没有看到一个丢失。
Edit2:试过了
SELECT *
FROM plane
WHERE MONTHS BETWEEN (sysdate, last_maintain ) > 24;
仍然告诉我需要更多括号。
编辑3:问题已解决,这是最终的代码:
SELECT *
FROM plane
WHERE MONTHS_BETWEEN (sysdate, last_maintain) > 24;
答案 0 :(得分:2)
to_date
。 to_date
将字符串转换为日期。只有将字符串传递给to_date
。date
的函数。这与文字字符串sysdate
你可能想要
SELECT *
FROM plane
WHERE months_between( sysdate, last_maintain ) > 24
答案 1 :(得分:0)
MONTHS_BETWEEN将结果作为第一秒返回,因此在您的情况下,所有值都是< 0.把sysdate放在第一位。
来自Oracle doc:
"如果date1早于date2,则结果为否定"