7月 132012
DBへの型のマッピングは気をつけないとダメだよという話。
予備知識とか
- ANSI SQLのDATE型は日付のみ保持する。
- OracleのDATE型は日付だけでなく時刻まで保持する。(秒未満の精度とタイムゾーンは保持しない)
DATE型@Java
- java.sql.DateクラスはANSI準拠。日付までしか保持しない
- java.util.Dateクラスはミリ秒まで保持する。
- JDBCではjava.sql.DateクラスはDATE型(JDBC)にマッピングされる。
- JDBCではjava.util.DateクラスはDATE、TIME、TIMESTAMP型(JDBC)にマッピングされる。
問題例とか
- JavaでOracleに日付を登録する場合、やり方によっては時刻情報が落ちる。
- java.sql.Dateのコンストラクタはlong型なミリ秒を受け取れるが、残るのは日付のみ。
参考: