2017-06-08 9 views
0

月末にクエリを実行する際に助けが必要です。 1月の各就業日はそれぞれ異なる場合がありますので、月の3日に勤務することがあります。月次レポートのMySQL日付

今月のデータを選択するWHERE文がどのように見えるかを調べようとしています。 月の第1日、前月のすべてを選択する必要があります 第1営業日3月になる可能性があります。また、前月のデータを選択する必要があります。

これは私が現在プレイしている2つのシナリオであり、まだテストするためのデータがありません。

私は

WHERE 
MONTH(action_date) = MONTH(DATE_SUB(CURDATE(),INTERVAL 1 DAY)) 

ことについて考えている。しかし、これは、その後も私も

WHERE 
action_date = DATE_SUB(CURDATE(),INTERVAL 1 DAY) 

をやって考えてきた。しかし、今日だった場合、これは動作しないと2016年

からデータを返します3月3日に言います。

私はあなたが実際に減算から取得するすべてがAであるとして、あなたは単に、日から数日以上、あるいは月を引く可能性が私にこの

+0

を参照してください:[私は非常に単純なSQLクエリであることを私には思える何のためにMCVEを提供しなければならないのはなぜ?](https://meta.stackoverflow.com/質問/ 333952/wh私にとって非常にシンプルなSQLクエリです) – Strawberry

+0

私はカレンダー/日付テーブルを持っていて、これはフラグを持っていましたその月の最初の作業日を示し、そのようなレポートをオフにする。これを行うことが許可されていない場合(そして別のスキーマにある可能性がある場合)、今後数年間、すべての最初の作業日を含むサブクエリに参加することもできます。 –

答えて

0

を行うための最善の方法を与える任意の答えをいただければ幸いです月とにかく

MONTH(DATE_SUB(CURDATE(),INTERVAL 5 DAY)) 

OR

MONTH(DATE_SUB(CURDATE(),INTERVAL 1 MONTH)) 
+0

3日を減算する問題は、今日が水曜日の場合は3日であることを意味します。先月からデータを取得しますが、今日の水曜日が3日の場合は今月のデータが必要です。 曜日名と日付の両方をチェックする必要があります。 –

関連する問題