SQL BETWEEN 2个日期值HELP

时间:2009-12-21 18:15:00

标签: sql date between

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

{1}}和CoverMonth_start日期从1月到12月循环播放。该查询应该只选择记录_end。但是这个查询正在选择数据库中的所有记录。

5 个答案:

答案 0 :(得分: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 & "')")

答案 1 :(得分:1)

这是因为您正在执行date_Start OR....,这是选择date_Start中任意值且date_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 & "')"

答案 2 :(得分:0)

SELECT * FROM myDateTable WHERE date_Start between date1 and date2 OR date_end BETWEEN date1 and date2

答案 3 :(得分:0)

SELECT * 
FROM myDateTable
WHERE (date_start BETWEEN .... AND ....)
OR
(date_end BETWEEN .... AND ....)

答案 4 :(得分: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)

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