大于/小于或等于在Oracle / SQL Plus中不起作用

时间:2014-03-31 19:38:22

标签: oracle oracle11g sqlplus

我试图显示某些日期之间可用的数据。如果我把确切的日期放在日期表中就行了。但是,当我输入的日期大于或小于查询时不起作用(未选择任何行)。有人可以试着帮助我直接解决这个问题吗?感谢...

Dates
Date_id    StartDate    EndDate
  1        19-FEB-14    31-JUL-14


SELECT FirstName, SecondName
FROM Doctor, Available, Dates, DoctorType
WHERE Available.available = 'YES'
AND Type = '&Type'
AND Dates.StartDate >= '&StartDate'
AND Dates.EndDate <= '&EndDate';

进入19-FEB-14和31-JUL-14将起作用。但是,如果我把20-FEB-14和30-JUL-14放在例如它不能获取数据。

1 个答案:

答案 0 :(得分:2)

假设date.StartDatedates.EndDate都是date类型,您的查询是将日期与字符串进行比较。这意味着你最终会得到字符串比较语义(即哪个字符串首先按字母顺序出现)而不是日期比较语义(即哪个日期首先出现在日历上)。为了获得正确的语义,您需要将日期与日期进行比较

AND dates.StartDate >= to_date( '&StartDate', 'DD-MON-RR' )
AND dates.EndDate   <= to_date( '&EndDate', 'DD-MON-RR' )

假设您希望以DD-MON-RR格式输入两个日期。