Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

現在日付を入れたい

DBにレコード挿入、updateかけるさいに現在日付を
java側で
insertDATEを入れたいのですが、どのようにすればいいでしょうか。

ps.setDate(indx,new java.sql.date(new java util.date.getTime());

としていれようとしたのですが、2008/09/09と
項目に入りました。
"2008/09/09 17:09:33"
と時分までいれたいのです。よろしくお願いします。




9

回答

13565

閲覧

9件の回答

評価

0

日付のフォーマットを指定したい場合はSimpleDateFormatクラスを使うと簡単に出来る。
以上。あとはAPI見て自分の思ってるフォーマットを
指定してやればOK。

評価

0

そのDBの値はどうやって調べたんだ。
DBMSが何か分からないけど、DBのカラムは本当に時刻まで入るものなのか?

評価

0

オラクルのdate型です。
これにsql.dateで入れると、
時分までは入らないという記述をみました。
以下の記述でいいでしょうか。
DBにつながってる環境がないので、候補だけあげてます。
new Timestamp((new date).getTime())

SimpleDateFormatについても今からしらべてみます。
ありがとうございます。

評価

0

PreparedStatement.setObject( 1, new Timestamp( date.getTime() ) 

上記方法も追加しておきます。結果は夜当たりにかきますが、ググッてわかったのは、どうも
1、sql.date自体が時間、分を削ってる。
2、sql.Timestampを使うのが正道らしいけど、
  JDBCでDate型項目にマッピングされてるのは、
  sql.dateだけ。

対策、いろいろあるらしいですが、
JDBCの動作モードをバージョン8にする
項目の型をTimestamp型にする。

評価

0

そういえば、ここの過去ログにも全く同じ話題があったなw

評価

0

SYSDATEじゃだめなの?

評価

0

new Date()ならいいけど、現に変数として持っているDateの場合もあるからね。

評価

0

Webシステムとかだと、SYSDATEは使わないで受信日時を使うとか結構あるようですね。

この場合はコードが
> ps.setDate(indx,new java.sql.date(new java util.date.getTime());
ってなってたので、これは
  ps.setDate(indx,new java.sql.date(new java util.Date.getTime());
のtypoにしかみえなくて。
これならSQLにSYSDATEを埋めといたほうが楽でしょうと。

別のところで生成したDate型の変数を使うなら、SimpleDateFormatで文字列にして、oracleのto_date関数を使ってoracleに渡した後でDATE型に変換する手もありますね。二度手間な気もしますが。

評価

0

わけあって、物理削除〜インサートをすることで
updateかけなければなりません。なのでSYSDATEを
SQLに埋め込むことは出来ません。

SimpleDateFormatクラスを組み合わせて、文字列の日付から
DATE型変換から登録でうまくいきました。

有難う御座います。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。