使用日期帮助SQL查询

时间:2011-06-01 14:07:49

标签: sql

我的SQL有点生疏,我的SQL查询有点麻烦。这是我目前的查询:

 SELECT DISTINCT restriction FROM restrictions 
 WHERE id = ? AND start_date 
 BETWEEN TO_DATE(?, 'yyyy/mm/dd') and TO_DATE(?, 'yyyy/mm/dd') ;

根据用户定义的参数设置问号,但这不重要。所以在这里我得到两个特定日期之间的任何限制,这很好。我需要为此添加另一个条件。类似的东西:

OR start_date < TO_DATE(?, 'yyyy/mm/dd') and end_date is NULL;

我知道我在这里有什么不对,但它应该给你一个想法.....我想要所有上述条件(第一个代码片段中的那个),我希望它也能抓住任何一个开头日期在第一个'?'之前的限制,并且具有相应的end_date为null(第二个代码片段)。我相信这可以在一个SQL查询中完成,任何帮助都表示赞赏,如果您有任何疑问,请询问。

2 个答案:

答案 0 :(得分:1)

SELECT DISTINCT restriction 
FROM restrictions   
WHERE id = ? 
    AND (start_date BETWEEN TO_DATE(?, 'yyyy/mm/dd') and TO_DATE(?, 'yyyy/mm/dd')
        OR start_date < TO_DATE(?, 'yyyy/mm/dd') and end_date is NULL); 

答案 1 :(得分:0)

我认为这就是你要求的:

SELECT DISTINCT restriction FROM restrictions 
WHERE id = ? AND 
(start_date BETWEEN TO_DATE(?, 'yyyy/mm/dd') and TO_DATE(?, 'yyyy/mm/dd'))
OR (start_date < TO_DATE(?, 'yyyy/mm/dd') and end_date is NULL)