重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

こんにちは、開始日と期間で終了日を求める方法を教えて下さい。
java1.4を使用しています。


開始日:2008-08-01(String)
期間:14(int) 営業日だけの数値です。
休日はDBから取得ができ、
月~日までのカラムがあり
休日の場合は、「0」そうでない場合は「1」になっています。
* 休日は任意で「土曜、日曜」だけとは限りません。

上記の数値で計算すると、2008-08-14になりますが、
休日も含めた日数で表示をさせたいです。
表示させたい結果:2008-08-20

本当に、困っています。どうぞよろしくお願いいたします。

A 回答 (3件)

ANo.2 です。


すいません。先ほどの回答間違っていました。

単純に、以下の条件でSQLを発行して、営業日分まわせばいけると思います。

開始日以降の営業日を日付順に取得
where 休日フラグ = 1
and 開始日 <= 日付
order by 日付

もし、余裕があるなら
accessならtop
postgreSQLならLIMIT
oracleならROWNUM
などを利用すればrecordSetの最後の値がそれになると思います。
    • good
    • 0
この回答へのお礼

お礼がおそくなり申しわけございません。
早速のお答え&とても丁寧な解説ありがとうございました。

教えて頂いたSQLで期待する値が取得できました。
本当に助かりました。次回からはテーブル定義も載せるようにします。

お礼日時:2008/09/11 23:47

数値で計算するとと記述されているので、


何日という計算をする事は可能なのでしょうか?

ということで話を進めますが、
SQLのCOUNT(*)で、休みの日を求めればいいと思います。

SQL文で、休みの日数を取得 (SQLは適当に書いています。group byが必要?)

SELECT COUNT(*) FROM emp
WHERE 休日フラグが入っているフィールド = 0
and 開始日 から 終了日までの範囲条件

そうすればレコードの値が、休みの日になります。
その分の日数を営業日にたせば、問題ないと思いますよ。

javaの場合、カレンダクラスを利用すれば、
addメソッドがあり、日数を足せば計算出来ます。
そのあたりも必要なら聞いて下さい。
    • good
    • 0

テーブル定義が提示されないと答え辛いのですが・・・



開始日から一か月分のデータを取得し、単純にフラグの立っている所14個分を数えましょう、としか答えようがないですね。

一週間分のデータが1レコードとして入っている感じですが、日付のデータはどのように入っていて、開始日をどうやって判別しているのか、等が判りませんし。

テーブル定義(出してまずい部分は適当にぼかして構わないので)を提示して貰えると、回答も貰いやすいと思いますよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!