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

CoverMonth_startと日付は_end1月から12月までループしています。このクエリは、レコードのみを選択することになっています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 に答える