2012-01-18 15 views
0

にあなたの助けが必要です。私は自分自身を試みたが、それを解決することはできない。月のmysqlの相違点where句

私は日付の列(例:出生)のテーブルを持っていますので、出生が過去1ヶ月以上あるすべての行を選択する必要があります。

は、私がグーグルとSO同様の The difference in months between dates in MySQL

質問していない。しかし、この新しい時代によって条件は何もありました。私の間違ったクエリは次のとおりです。

select id,period_diff(date_format(now(), "%Y%m"), date_format(birth, "%Y%m")) as months 
from t1 
where months>0 
limit 10 

答えて

2

以下は試してみてください。

使用havingALIASヶ月箇条WHEREでここで働いていない)

select id,period_diff(date_format(now(), "%Y%m"), date_format(birth, "%Y%m")) as months 
from t1 
having months>0 
limit 10 

HAVINGWHEREのようですが、カラム上で動作することができます計算される(Alias)。 HAVINGは、クエリの残りの部分が実行された後に結果を整理することによって機能します。WHERE句の代わりではありません。

2

あなたはWHERE句

SELECT id, 
     period_diff(date_format(now(), "%Y%m"), date_format(birth, "%Y%m")) as months 
FROM t1 
WHERE period_diff(date_format(now(), "%Y%m"), date_format(birth, "%Y%m")) > 0 
LIMIT 10 
ALIASを使用することはできません