- 締切済み
対象年月の1日から末日までの日付を抜けがなく取得したい場合
対象年月の1日から末日までの日付を抜けがなく取得したい場合 どの様なSQLを作ればいいでしょうか。 今考えているのが、 (1).月の初めは必ず1日から始まる (2).対象年月の末日は取得できる 以上より、1日から末日までをwhile文(for文)で回せば抜けがな く日付を取得できると思っています。 上記を実現できるSQLをご教示下さい。 よろしくお願いします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- mitoneko
- ベストアンサー率58% (469/798)
回答No.1
SQLと言う言語は、そもそも集合を扱うために作られた言語です。裏付けにある数学理論は、集合論ですし。 というわけで、規則に従って順次的にという処理は、はっきり言って苦手です。 無理すれば、出来なくはないんですが、各社のデータベースの方言・独自機能をフルに使って・・・という結末になります。 何もないところから、連番の数字を作り出すという発想を切り替えましょう。 テーブルにあるものの中から、ある一定の条件を満たすものを取り出すのは、大得意な分野ですから、そうすればよいです。 日付テーブルを作ります。カラムは、日付の一つだけです。 テーブルには、1~31までの数字を入れます。 これなら、後は、簡単です。 select 日付 from 日付テーブル where 日付 <= その月の末日 order by 日付 日付を列挙する必要のある処理って、意外とあるもので、私は、366行のテーブルを作ったこともよくありますよ。ようするに、カラムは、月と日付のふたつで一年分ですね。閏年の処理だけしないといけませんけど。 日付がらみの集計には、時として必要となります。