我的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查询中完成,任何帮助都表示赞赏,如果您有任何疑问,请询问。
答案 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)