我试图在我的桌子上返回汽车信息'汽车'其中有MOT将在未来两周内到期。
MOTDUE被定义为to_date('2015-03-25', 'yyyy-mm-dd');
SELECT * FROM Cars WHERE MOTDUE = CURRENT_DATE + INTERVAL '2' WEEK;
只是给了我"缺少或无效的日期时间字段"错误。
感谢。
答案 0 :(得分:2)
根据“未来两周内”的含义并假设MOTDUE
列的数据类型为DATE
,以下内容应该为您提供所需(或至少,允许你适当修改):
select *
from cars
where motdue < trunc(sysdate) + 14
and motdue >= trunc(sysdate);
答案 1 :(得分:1)
试试这个:
SELECT * FROM Cars WHERE MOTDUE = CURRENT_DATE + INTERVAL '14' DAY;
答案 2 :(得分:0)
Oracle中有两种类型的INTERVAL
- YEAR TO MONTH
和DAY TO SECOND
。因此YEAR
,MONTH
,DAY
,HOUR
,MINUTE
和SECOND
都是有效的增量。遗憾的是,WEEK
不是(遗憾的是FORTNIGHT
)。 ANSI标准的执行方式如下:
SELECT * FROM cars
WHERE motdue >= CURRENT_DATE
AND motdue < CURRENT_DATE + INTERVAL '14' DAY;
上述问题在于,在Oracle中,ANSI标准CURRENT_DATE
并不符合ANSI标准 - 它的时间部分与SYSDATE
类似。如果您不想在午夜截断日期,那就没问题了。