- ベストアンサー
開始日と期間で終了日を求める方法を教えて下さい。
こんにちは、開始日と期間で終了日を求める方法を教えて下さい。 java1.4を使用しています。 開始日:2008-08-01(String) 期間:14(int) 営業日だけの数値です。 休日はDBから取得ができ、 月~日までのカラムがあり 休日の場合は、「0」そうでない場合は「1」になっています。 * 休日は任意で「土曜、日曜」だけとは限りません。 上記の数値で計算すると、2008-08-14になりますが、 休日も含めた日数で表示をさせたいです。 表示させたい結果:2008-08-20 本当に、困っています。どうぞよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
ANo.2 です。 すいません。先ほどの回答間違っていました。 単純に、以下の条件でSQLを発行して、営業日分まわせばいけると思います。 開始日以降の営業日を日付順に取得 where 休日フラグ = 1 and 開始日 <= 日付 order by 日付 もし、余裕があるなら accessならtop postgreSQLならLIMIT oracleならROWNUM などを利用すればrecordSetの最後の値がそれになると思います。
その他の回答 (2)
- namida6000
- ベストアンサー率57% (12/21)
数値で計算するとと記述されているので、 何日という計算をする事は可能なのでしょうか? ということで話を進めますが、 SQLのCOUNT(*)で、休みの日を求めればいいと思います。 SQL文で、休みの日数を取得 (SQLは適当に書いています。group byが必要?) SELECT COUNT(*) FROM emp WHERE 休日フラグが入っているフィールド = 0 and 開始日 から 終了日までの範囲条件 そうすればレコードの値が、休みの日になります。 その分の日数を営業日にたせば、問題ないと思いますよ。 javaの場合、カレンダクラスを利用すれば、 addメソッドがあり、日数を足せば計算出来ます。 そのあたりも必要なら聞いて下さい。
テーブル定義が提示されないと答え辛いのですが・・・ 開始日から一か月分のデータを取得し、単純にフラグの立っている所14個分を数えましょう、としか答えようがないですね。 一週間分のデータが1レコードとして入っている感じですが、日付のデータはどのように入っていて、開始日をどうやって判別しているのか、等が判りませんし。 テーブル定義(出してまずい部分は適当にぼかして構わないので)を提示して貰えると、回答も貰いやすいと思いますよ。
お礼
お礼がおそくなり申しわけございません。 早速のお答え&とても丁寧な解説ありがとうございました。 教えて頂いたSQLで期待する値が取得できました。 本当に助かりました。次回からはテーブル定義も載せるようにします。