- ベストアンサー
日付の計算について
プログラム初心者です。 "select TO_DATE(?,'YYYMMDD')-TO_DATE(?,'YYYMMDDHH24MISS') as A from dual"で取得できる値をjavaを使って取得したいのですが、うまくいきません。よろしくお願い致します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Calendar、Dateクラスを使います。 あとは、お好みでSimpleDateFormatクラスかな。 自分の場合は、 1.Calendarクラスのオブジェクトを3つ用意。(cal1, cal2, cal3) 2.cal1, cal2に日付をセット 3.cal1, cal2からミリ秒の値を取得し、引き算。 4.cal3に2.で取得した値をセット。 5.cal3からDate型オブジェクトを取得し、SimpleDateFormatで指定されたフォーマットの文字列(YYYYMMDDとかYYYY/MM/DDとか)に変換 という感じです。 SimpleDateFormat使わなくても、cal3から直接年、月、日を取得するメソッドもあります。
その他の回答 (1)
- x_jouet_x
- ベストアンサー率68% (162/236)
SQL文を見るかぎり、データベース(Oracle)に対して日付演算のSQLを使って、JavaのPreparedStatementクラスでデータを取得しようとしていると「推測」できますが・・・、これだけでは適切な回答は得られないと思いますよ。 1. まず、Javaでどのような処理を行おうとしているか教えて下さい。 恐らく、上に書いたようにJDBCを使ってデータベースからデータを取得しようとしているのでしょうが・・・。 もし、PreparedStatementクラスを使用しているのであれば、SQL文の"?"の部分にどのような値を設定しているのでしょうか? 2. どのように「うまくいかない」のでしょうか? 例えば、「データベースのエラーが発生する」とか「Javaの実行時にエラーが発生する」などが挙げられると思います。 それか、SQLクエリーを実行した後のResultSetオブジェクトから値を取得する方法が分からないのでしょうか? プログラムの初心者さんであれば、「うまくいかない」部分の質問を具体的に書くのは難しいかも知れませんが、上記の1、2をきちんと書けば適切な回答が得られると思いますよ。
補足
質問文のSQLが間違ってました。すいません。Yが足りませんでした。 "select TO_DATE(?,'YYYYMMDD')-TO_DATE(?,'YYYYMMDDHH24MISS') as A from dual" 漠然とした質問ですみません。 ?には、1つ目は20080920,2つ目は200809151230のような値が入ります。 現在ResultSetオブジェクトから値を取得しているのを、SQLは使わずにjavaでどのようにして日付の計算をするのかがわかりません。 どのクラスのどのメソッドを使えば一番ベターなのでしょうか。 よろしくお願い致します。