• 締切済み

対象年月の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行のテーブルを作ったこともよくありますよ。ようするに、カラムは、月と日付のふたつで一年分ですね。閏年の処理だけしないといけませんけど。  日付がらみの集計には、時として必要となります。

関連するQ&A

  • 入力された年月からその月の末日を取得する

    import java.util.*; class Sample { public static void main(String[] args) { System.out.println(args[0]); Calendar cal = Calendar.getInstance(); cal.set(2000,1,1); int y = cal.get(Calendar.YEAR); int m = cal.get(Calendar.MONTH) + 1; int last = cal.getActualMaximum(Calendar.DATE); System.out.print(y + "年" + m + "月の末日は "); System.out.println(last + "日です"); } } で、2000年2月の末日を取得することが出来るのはわかったのですが プログラム上で年月の入力を促してその月の末日を取得するにはどうすればいいのでしょうか? (プログラム実行例) C:\JAVA\SAMPLE>java Sample 2009 2 2009年2月の末日は 28です ↑のようにプログラム上で年 月を入力して実行し、末日を取得したいのですが・・・ 多分この場合、入力数値などに対する例外処理や閏年の処理などもやらないとダメだと思いますがよくわかりません

    • ベストアンサー
    • Java
  • 各月の末日を取得する方法を教えてください

    VB+Access97を使って開発しております。 データベースの年月フィールドには西暦と月が格納されており、 そのデータをもとにその月の末日を取得したいのですが 取得方法を教えてください。 例:DBの年月フィールドの中身→そこから取得したい年月(末)日 2001/01→2001/01/31 2001/02→2001/02/28 2001/03→2001/03/31 ・ ・ ・ ・

  • 指定した年月までのデータを取得するSQL文

    いつもお世話になっております。 今、指定した年月までのデータを取得するSQL文を考えています。 例:NENGETSU_DATEカラムがDATE型で、 データとして、2008/11/12と、2008/11/18と、2008/12/12が入っているとして、11月だけのデータを取得したい。(今回は、2008/11/12と、2008/11/18を取得) どのようなSQL文を書けばよろしいでしょうか。 よろしくお願いいたします。

  • 最新の日付と2番目の日付のデータ取得方法

    SQL Server 2008 にて下記条件を満たしたデータの取得を行いたいです。 ・IDごとに、日付がある日以前で最新のものとその次の日付のデータ2件 ・ただし、その2件で価格が変わらなければ価格変動のあった日付のデータまでさかのぼる ・価格が同じデータの場合、古い日付のデータを取得 例: ・条件…日付が20040101以前 <検索対象データ> ID  日付    価格 ------------------------ 1   20000101   100 1   20010201   100 1   20020301   200 2   20020401   300 2   20000501  400 2   20010601   400 2   20030701   300 3   20000801   500 3   20010901  600 3   20040901  600 <取得したい結果> ID  日付    価格 ------------------------ 1   20020301   200 1   20000101   100 2   20020401   300 2   20000501  400 3   20010901  600 3   20000801   500 なるべく少ないSelect文で取得したいと考えております。 よろしくお願いします。

  • エクセル:関数で月末日を取得したい

    お世話になります。 次のような関数を教えてください。どこかでみかけたのですが・・・(思い出せません) A1.....................................B1 2006/4/10 .............(........ ) ◆セルA1の日付からB1にその月の「月末日(2006/4/30)」を取得したい。 ◆例えば、A1に閏年の2月を入れるとその月末日をB1に正しく取得できますように教えてください。 以上、よろしくお願いいたします。

  • 学位取得の日付

    今度ある会社に履歴書を送ることになりました。 履歴書はその会社指定のものです。その中に学位取得の年月日を書く欄がありました。私は修士の学位を持っているのですが、取得した年はもちろん分りますが日付の欄をどう書けばいいのか悩んでいます。一般的に学位取得の日付というものは大学で学位授与式が行われた卒業式の日付を書くのでしょうか。それとも卒業した月の末日(3月31日)と書くべきなのでしょうか。 修了証書を見ればいいのでしょうが現在手元にないもので・・

  • その月の日付を取得するには?

    PHPなどで、今日の日付を取得し、 その月に対して1日~31日までというような 終わる日にちを取得することは可能なのでしょうか?? 現在のプログラムでPHPで日付を取得して、 例:(今日だと2004/08) などというように その後、年と月は取得できているので、 その日にち1日から31日を取得できれば、 between A and B で、その月の内容を取得できるのですが、 無理でしょうか??

  • 年月日 selectbox

    現在javaにて日付selectboxを作成を予定しています。 わからないとこがあり、投稿させていただきました。 環境はeclipseを使用しながらplayframeworkを使っています。 年月日で本日から3ヵ月後まで選択できるselectboxを作りたいのですが、できずに困っています。 年月が一緒で日が別になります。 例: 年月 2012年12月 2013年01月 2013年02月 2013年03月 日 1日~31日まで。 どのように表示させればよいでしょうか。 考えているのは一度今日日付を取得し3ヵ月後の日付を取得。 for文でループさせて表示させるときに年月、日と切り分けるのがベストでしょうか? お分かりの方がいらっしゃいましたらご教授お願いします。 また、コードも教えていただけると助かります。

  • Mysqlで最新の日付を持つデータを取得するSQLを書きたい

    Mysqlで最新の日付を持つデータを取得するSQLを書きたい 管理テーブル(MySql) 日 付|食べたもの ----------- 4月1日|パン 4月2日|ご飯 4月3日|パン 4月4日|パン 4月5日|ご飯 4月6日|カレー と言ったデータがあったとき パンを食べた最新の日付を取得したいとき どんなSQLを書けばいいのでしょうか? SELECT * FROM 管理テーブル WHERE 食べたもの = パン ORDER BY 日付 DESC LIMIT 1; とすれば、思うような結果が出ましたが LIMITは使いたくありません また 日 付|食べたもの ----------- 4月4日|パン 4月5日|ご飯 4月6日|カレー 上記のように 食べたのもそれぞれの最新の日付を表示して 一覧にしたいとき(表現ベタですみません) どんなSQLになりますか?

    • ベストアンサー
    • MySQL
  • 指定された日付とマッチングした日付のレコードを取得するには?

    おはようございます。  質問なのですが、VBのフォームで、ラベルに現在時刻と日付を表示させています。表示された日付をもとに、データベースから同じ日のレコードを合計し、その合計した数値を取得したいと思います。この場合、どのようにSQLで記述すればよいのでしょうか?    具体的には、客別の売上げ額を日付ごとに集計し、総合計を算出プログラムにしたいと思っています。  そして、現在はDataEnvironmentを使用して作成しています。