【发布时间】:2015-11-09 20:56:34
【问题描述】:
我希望退回所有当前未出租的物品,这由每个物品的开始和结束日期定义。
我创建了以下代码,但这并没有返回正确的结果。
SELECT DISTINCT item.ITEM_ID, details.barcode
FROM item
JOIN details ON item.ITEM_ID = details.ITEM_ID
WHERE (item.HIRE_DATE NOT BETWEEN TO_DATE('01/05/2015','dd/mm/yyyy')
AND TO_DATE('11/05/2015','dd/mm/yyyy'))
AND item.END_DATE NOT BETWEEN TO_DATE('01/05/2015','dd/mm/yyyy')
AND TO_DATE('11/05/2015','dd/mm/yyyy');
我已经包含了我的表格的一小部分来解释我需要什么:
Hire_Date | End_Date | Item_ID
-------------------------------------
01/01/2015 | 03/01/2015 | ItemID_12
06/01/2015 | 07/01/2015 | ItemID_12
03/01/2015 | 10/01/2015 | ItemID_5
02/01/2015 | 04/01/2015 | ItemID_8
12/01/2015 | 15/01/2015 | ItemID_10
11/01/2015 | 20/01/2015 | ItemID_4
15/01/2015 | 16/01/2015 | ItemID_5
01/01/2015 | 03/01/2015 | ItemID_3
07/01/2015 | 10/01/2015 | ItemID_3
01/01/2015 | 07/01/2015 | ItemID_2
10/01/2015 | 15/01/2015 | ItemID_12
16/01/2015 | 20/01/2015 | ItemID_3
05/01/2015 | 15/01/2015 | ItemID_8
16/01/2015 | 20/01/2015 | ItemID_10
10/01/2015 | 15/01/2015 | ItemID_2
在上表中,如果我将开始日期设置为06/01/2015,将结束日期设置为10/01/2015,它只会返回ItemID_4 和ItemID_10,因为在该日期范围内根本不使用这些。
【问题讨论】:
-
你有什么数据,它返回什么以及你期望它应该返回什么?
-
另请注意,
hire_date或end_date的null值将导致您的条件为假。 -
您确定您的格式不应该是“mm/dd/yyyy”吗?
-
更新了我的帖子以提供更多细节