0と4の間の値のMTR値を選択しようとしています。何が問題なのですか?
SELECT
DATEDIFF(M, TheDate, TheOtherDate) AS MTR FROM MyTable
WHERE MyID = 2074163
AND MTR >= 0 OR MTR <= 4
MTRの境界の内側と外側の値が1〜4の範囲にある結果を返します(-3〜75)。
交互に
SELECT
DATEDIFF(M, TheDate, TheOtherDate) AS MTR FROM MyTable
WHERE MyID = 2074163
and MTR BETWEEN 0 AND 4
0、-2、-3、および-4の結果も返しますが、0より大きく4未満の値はありません(0のエントリを除く)
このための正しい構文は次のとおりです。
SELECT DATEDIFF(M, TheDate, TheOtherDate) AS MTR
FROM MyTable
WHERE MyID = 2074163 AND (
DATEDIFF(M, TheDate, TheOtherDate) >= 0 AND
DATEDIFF(M, TheDate, TheOtherDate) <= 4
)
Ypercubeのコメントに関連性があります。標準によれば、MTR
句のWHERE
への参照には無効のフラグを付ける必要があります。しかしそれとは別に、MTR
のどの値がOR
を評価してfalse
になると思いますか?