日期验证Oracle SQL 11g

时间:2015-11-05 17:30:28

标签: sql oracle oracle11g

我试图找到所有用于这些日期的车辆,包括可能在出发和返回之间的日期开始或在规定的返回日期(用户声明)之后完成的车辆。有什么建议吗?

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;

1 个答案:

答案 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猜测(也就是隐式转换)你准确指定它的日期是什么日期?