2017-02-02 7 views
0

私は最後の暦月のレコードを照会しています。 2月であるので、今年1月に追加されたすべてのレコードを返します。MYSQL先月クエリが最初に返されません9日

マイクエリ:

`SELECT * FROM table_name WHERE date >= 
DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 2 MONTH)), INTERVAL 1 
DAY) AND date <= DATE_ADD(LAST_DAY(DATE_SUB(NOW(), INTERVAL 1 
MONTH)), INTERVAL 0 DAY) AND campaign = '$campaign' ORDER BY date 
ASC` 

これは、いくつかのレコードを返しますが、最初の9日間スキップします。前月の10日からレコードが表示されます。私はここで何が欠けていますか?

+0

データと一緒にテーブルをポストする – amit

+0

日付機能の結果をフィールドとして保存し、その値をチェックしてみるか、phpmyadminでこのクエリを実行してください(簡単に) –

+0

@OfirBaruch、同じ!どんな私のphpmyadminでする必要がありますか? –

答えて

1

日付フィールドのタイプを確認してください。

+0

それが原因でした。ありがとうございます! –

0
SELECT * FROM table_name WHERE date between DATE_SUB(DATE_SUB(CURRENT_DATE,INTERVAL DAYOFMONTH(CURRENT_DATE)-1 DAY),INTERVAL 1 MONTH) AND DATE_SUB(DATE_SUB(CURRENT_DATE,INTERVAL DAYOFMONTH(CURRENT_DATE)-1 DAY),INTERVAL 1 DAY) AND campaign = '$campaign' ORDER BY date ASC 
+0

同じ –

+0

を返して、条件(campaign = '$ campaign')を削除し、レコードが返すかどうか – Pavankant

+0

既にその仲間を試みた! –

0

は段階的にデータを取得しようとするような、

まず、クエリの下に試してみてください。

第2ステップでは、最初のステップで正しい日付が与えられたら、where句のDATE_ADD関数ではなく日付を直接書き込むことでデータを取得します。

第3に、DATE_ADD関数を使用してデータを取得しようとすると、DATAを書き込む場合。

リプレイ場合は、解決策を取得します。 TABLE_NAME FROM

0

SELECT * WHERE (MONTH(日付)= NOW(MONTH(()) - 1)、YEAR(日付)= NOW YEAR(())) OR (MONTH(日付)= 12 AND 1)ANDキャンペーン= '$キャンペーン' ORDER BY日付 ASC`

関連する問題