我试图显示某些日期之间可用的数据。如果我把确切的日期放在日期表中就行了。但是,当我输入的日期大于或小于查询时不起作用(未选择任何行)。有人可以试着帮助我直接解决这个问题吗?感谢...
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放在例如它不能获取数据。
答案 0 :(得分:2)
假设date.StartDate
和dates.EndDate
都是date
类型,您的查询是将日期与字符串进行比较。这意味着你最终会得到字符串比较语义(即哪个字符串首先按字母顺序出现)而不是日期比较语义(即哪个日期首先出现在日历上)。为了获得正确的语义,您需要将日期与日期进行比较
AND dates.StartDate >= to_date( '&StartDate', 'DD-MON-RR' )
AND dates.EndDate <= to_date( '&EndDate', 'DD-MON-RR' )
假设您希望以DD-MON-RR格式输入两个日期。