我试图找到所有用于这些日期的车辆,包括可能在出发和返回之间的日期开始或在规定的返回日期(用户声明)之后完成的车辆。有什么建议吗?
SELECT REGISTRATION,VEHICLE_TYPE_ID
FROM VEHICLE
INNER JOIN TRIP
ON (TRIP.VEHICLE_REGISTRATION=REGISTRATION)
where (TRIP.DEPARTURE) >= '02-JAN-12' AND (TRIP.RETURN) <= '04-JAN-12'
GROUP BY VEHICLE.REGISTRATION,VEHICLE.VEHICLE_TYPE_ID;
答案 0 :(得分:1)
我希望你在此之后:
select v.registration,
v.vehicle_type_id
from vehicle v
inner join trip t on (t.vehicle_registration = v.registration)
where t.return >= to_date('02/01/2012', 'dd/mm/yyyy')
and t.departure <= to_date('04/01/2012', 'dd/mm/yyyy')
group by v.registration,
v.vehicle_type_id;
N.B。你会注意到我使用to_date明确地将你的日期字符串转换为DATE。这是一种很好的做法,可以防止错误,如果您的nls_date_format
参数设置为默认的'dd-MON-rr'以外的其他参数,则可能会发生错误。
为什么让Oracle猜测(也就是隐式转换)你准确指定它的日期是什么日期?