SELECT * FROM myDateTable
WHERE date_Start
OR date_end
BETWEEN DateValue('" & CoverMonth_start & "')
AND DateValue('" & CoverMonth_end & "')"
{1}}和CoverMonth_start
日期从1月到12月循环播放。该查询应该只选择记录_end
。但是这个查询正在选择数据库中的所有记录。
答案 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)
你想要的是......哦,看到其他答案(一个简单的问题,不是吗?)