1. ホーム
  2. sql

[解決済み] MySQLの "between "句は包括的でない?

2022-04-26 01:43:57

質問

を指定してクエリを実行すると between 節を使用すると、終了値を除外してしまうようです。

例えば

select * from person where dob between '2011-01-01' and '2011-01-31'

これは、すべての結果を dob のレコードをスキップして、'2011-01-01' から '2011-01-30' まで。 dob が'2011-01-31'である。このクエリがなぜこのような動作をするのか、また、以下のようなレコードを含むようにクエリを変更するにはどうすればよいのか、どなたか教えてください。 dob は'2011-01-31'ですか?(ユーザーによって選択されているため、終了日に1を加えずに)

どのように解決するのですか?

フィールド dob は、おそらく時間的な要素を持っています。

切り捨てること。

select * from person 
where CAST(dob AS DATE) between '2011-01-01' and '2011-01-31'