因为你没有在你的标准语句的TO_DATE部分指定的小时,分钟或秒,甲骨文默认为00:00:00,所以你的陈述基本上说要寻找值为start_date is between "30-APR-2013 00:00:00 AM" AND "06-MAY-2013 00:00:00 AM"
。由于“06-MAY-2013 6:59:00 AM”超出此范围,因此不会在结果中返回。这里有几种方法可以解决这个问题:
指定TO_DATE语句中的小时数,分钟数和秒数,以包含日期范围后端的整个一天。
SELECT DISTINCT vname,start_date
FROM my_dates
WHERE start_date BETWEEN TO_DATE('30-APR-2013','DD-MON-YYYY')
AND TO_DATE('06-MAY-2013 11:59:59 PM','DD-MON-YYYY HH12:MI:SS AM')
或者你可以做一个计算,以23小时59分59秒添加到第二个日期值做上述同样的事情。
SELECT DISTINCT vname,start_date
FROM my_dates
WHERE start_date BETWEEN TO_DATE('30-APR-2013','DD-MON-YYYY')
AND TO_DATE('06-MAY-2013','DD-MON-YYYY')+1-(1/24/60/60)
希望有帮助。
我的眼球告诉我你的日期格式图片与你使用的日期格式不匹配。 – 2013-05-07 08:18:55
@DavidAldridge即使我从查询中删除HH12:MI:SS AM,我也无法得到最后一行 – user75ponic 2013-05-07 18:57:05