0

次のクエリに出くわしましたが、それらに違いがあるかどうかはわかりません。

select * from table where date between fromdate and todate

V/S

select * from table where date >= fromdate and date <= todate

最初のクエリを使用している場合、開始日と終了日の日付が含まれていますか? つまり、2012 年 10 月 16 日から 2012 年 10 月 22 日の間に、16 日と 22 日が含まれますか?

どうもありがとう。

4

6 に答える 6

1

はい、含まれています。
だから避けるBETWEEN。名前は少なくともあいまいです。さまざまな人がさまざまなことを理解しており、あなたの質問もそれを示しています。

たとえば、私の理解では、 between は排他的ですが、SQL ではinclusiveです。

于 2012-10-04T10:59:50.983 に答える
1

違いはありません。

(a BETWEEN b AND c)

書くことと同じです

((a >= b) AND (a <= c))
于 2012-10-04T11:00:49.283 に答える
0

変わりはない

どちらのクエリでも同じ結果が得られます

于 2012-10-04T10:59:40.657 に答える
0

違いはありません:

expr BETWEEN min AND max

expr が min 以上で expr が max 以下の場合、BETWEEN は 1 を返し、それ以外の場合は 0 を返します。これは、すべての引数が同じタイプの。

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between

于 2012-10-04T10:59:47.007 に答える
0

はい、含まれています。最初のものは 2 番目のものの単なるショートカットであるため、同等です。

于 2012-10-04T11:00:16.443 に答える
0

ここでいくつかの説明を確認できます: MySQL "before" clause not inclusive? また、 <= & => を使用する方が高速であることも読み取れます

于 2012-10-04T11:03:36.833 に答える