0

これらは私のテーブルです:

ut_period

id | month | year | name 
1  | 9     | 2013 | dddd
2  | 2     | 2017 | eeee

2013-8 と 2018-9 で選択行ウィッチが必要です。だから私はこのクエリを書きましたが、成功しません:

SELECT * 
FROM `ut_period` p  
WHERE `p`.`status` = 4 
  AND `p`.`year` >= '2013' 
  AND `p`.`mont` >= '8'
  AND `p`.`year` <= '2018' 
  AND `p`.`month` <= '9' 

どうすればいいですか?

4

2 に答える 2

1

「年-月」を処理する最も簡単な方法は、乗算によるものであることがわかりました-基本的に、ある日付からの月数:

select p.*
from ut_period p
where (p.year * 12 + p.month) between 2013*12 + 8  and 2018*12 + 9;

必要に応じて、これらを YYYYMM 形式の数値に変換することもできます。これにより、範囲の定数値を簡単に入力できます。

select p.*
from ut_period p
where (p.year * 100 + p.month) between 201308  and 201809;
于 2013-08-31T14:09:16.750 に答える
0

BETWEEN月と年の句を使用する

(ドキュメントはこちら)

また、日、月、年を 1 つの列に入れる必要があります。これが、MySQL に日付関連のフィールド タイプがある理由です。日、月、年を DATE フィールド タイプの 1 つの列に置き換えると、日付をより簡単に比較できます。

于 2013-08-31T14:07:34.937 に答える