2016-11-30 4 views
0

現在の月のデータを表示したい。しかし、私はこのクエリを使用して、クエリから余分な単一の文字列を生成しています。cakephpのmysql MONTHで単一文字列を生成する3

​​

生成:

SELECT 
    * 
FROM 
    `bookings` `Bookings` 
WHERE 
    MONTH(`Bookings`.`created`) = 'MONTH(CURRENT_DATE())' 

これは'MONTH(CURRENT_DATE())'を=それはブランクデータを生成しています。どのようにこのクエリを完成させることができますか?

+0

あなたは単純に '[" MONTH(Bookings.created)= MONTH(CURRENT_DATE()) "]' – arilia

答えて

0

MySQLは 'MONTH(CURRENT_DATE())' その周りの単一引用符を持つべきではありません

MONTH(`Bookings`.`created`) = 'MONTH(CURRENT_DATE())' 

に文字列としてごRHS値を処理しています。代わりに、このように

MONTH(`Bookings`.`created`) = MONTH(CURRENT_DATE()) 

は(関数MONTHとしても年を比較するようにしてくださいする必要があります)12を通じてのみ番号1を返し、クエリではなく、唯一の現在の年よりも、すべての年の月のすべてのレコードを返します。現在の年の月を比較するには、MONTH()、YEAR()の両方を使用します。

MONTH(`Bookings`.`created`) = MONTH(CURDATE()) AND YEAR(`Bookings`.`created`) = YEAR(CURDATE()) 
0

最後に、私は解決策を得ました。今は細かく作業しています。

$queryCurentMonth = $this->Bookings->find('all') 
       ->where(["MONTH(Bookings.created)" => date("m")]); 
関連する問題