0
SELECT * FROM myDateTable 
WHERE date_Start 
OR date_end 
BETWEEN DateValue('" & CoverMonth_start & "') 
AND DateValue('" & CoverMonth_end & "')"

和日期从一月到十二月循环CoverMonth_start_end这个查询应该只选择记录WHERE date_Start OR date_end BETWEEN DateValue...。但是这个查询选择了数据库中的所有记录。

4

5 回答 5

3

您的查询没有按照您的想法进行。

OR是您的问题 - 填充 date_start 的那一刻,将返回该记录。

这可能是您想要的查询:

 SELECT * FROM myDateTable 
 WHERE (date_Start 
    BETWEEN DateValue('" & CoverMonth_start & "') 
    AND DateValue('" & CoverMonth_end & "')")
 OR (date_end 
    BETWEEN DateValue('" & CoverMonth_start & "') 
    AND DateValue('" & CoverMonth_end & "')")
于 2009-12-21T18:18:42.490 回答
1

这是因为您正在date_Start OR....选择所有具有任何值date_Startdate_End在给定值范围内的记录。

你应该写的是这样的:

SELECT * FROM myDateTable WHERE
    date_Start BETWEEN DateValue('" & CoverMonth_start & "') AND DateValue('" & CoverMonth_end & "')"
    OR 
    date_end BETWEEN DateValue('" & CoverMonth_start & "') AND DateValue('" & CoverMonth_end & "')"
于 2009-12-21T18:18:15.483 回答
0
SELECT * FROM myDateTable WHERE date_Start between date1 and date2 OR date_end BETWEEN date1 and date2
于 2009-12-21T18:18:30.507 回答
0
SELECT * 
FROM myDateTable
WHERE (date_start BETWEEN .... AND ....)
OR
(date_end BETWEEN .... AND ....)
于 2009-12-21T18:18:56.667 回答
0

OR的优先级低于BETWEEN

WHERE date_Start OR date_end BETWEEN a AND b翻译成 WHERE CAST(date_Start AS BOOLEAN) = true OR ( date_end BETWEEN a AND b)

你想要的是......哦,看看其他答案(一个简单的问题,不是吗?)

于 2009-12-21T18:22:13.463 回答