• 締切済み

対象年月の1日から末日までの日付を抜けがなく取得したい場合

対象年月の1日から末日までの日付を抜けがなく取得したい場合 どの様なSQLを作ればいいでしょうか。 今考えているのが、  (1).月の初めは必ず1日から始まる  (2).対象年月の末日は取得できる   以上より、1日から末日までをwhile文(for文)で回せば抜けがな く日付を取得できると思っています。 上記を実現できるSQLをご教示下さい。 よろしくお願いします。

みんなの回答

  • mitoneko
  • ベストアンサー率58% (469/798)
回答No.1

 SQLと言う言語は、そもそも集合を扱うために作られた言語です。裏付けにある数学理論は、集合論ですし。  というわけで、規則に従って順次的にという処理は、はっきり言って苦手です。  無理すれば、出来なくはないんですが、各社のデータベースの方言・独自機能をフルに使って・・・という結末になります。  何もないところから、連番の数字を作り出すという発想を切り替えましょう。  テーブルにあるものの中から、ある一定の条件を満たすものを取り出すのは、大得意な分野ですから、そうすればよいです。  日付テーブルを作ります。カラムは、日付の一つだけです。  テーブルには、1~31までの数字を入れます。  これなら、後は、簡単です。  select 日付 from 日付テーブル where 日付 <= その月の末日 order by 日付  日付を列挙する必要のある処理って、意外とあるもので、私は、366行のテーブルを作ったこともよくありますよ。ようするに、カラムは、月と日付のふたつで一年分ですね。閏年の処理だけしないといけませんけど。  日付がらみの集計には、時として必要となります。