S2DaoでTimestamp型フィールドの時間情報が消える謎
timestampという名前のTimestamp型のフィールドをJavaBeansに用意して、insert時の時間情報をそのまま登録させようとしているのですが、insert後のselectで時間情報が00:00:00になってしまう事象が発生していることに気づきました。
で、調査してみたんですが、
S2Daoで自動生成されたinsertメソッドのSQLでtimestampフィールドに対応する時間部のデリミタが'2005-12-03 23.50.59'のように「:」ではなく「.」になっているのですが、これは仕様でしょうか?
DB2のリファレンスページらしきところでは、
SQL_TIMESTAMP 26 (TIMESTAMP データ・タイプで使用される、yyyy-mm-dd-hh.mm.ss.ffffff という形式での文字数。)
IBM notice: The page you requested cannot be displayed
ということでそういうフォーマットがあるようなんですが、これが標準SQL仕様なんでしたっけ?
とりあえずHSQLDBのDatabaseManagerで直接SQL文を発行して試してみました。
create table test (timestamp timestamp); insert into test values ('2005-12-03 23:59:59'); →OK. select * from test; →2005-12-03 23:59:59.000000000 insert into test values ('2005-12-03 23.59.59'); →Wrong data type / Error Code: -16 / State: 37000
となって、登録することはできませんでした。
これはHSQLDBのDatabaseManagerというGUIツールの仕様なんでしょうかね。
アプリケーション中で発行されたSQLは特にエラーにはなっていないんですが、時間情報が落ちてしまうわけです。
HSQLDBの問題なんでしょうか。
それとも、S2Daoの使い方が悪いのでしょうか。
MLに質問したほうが良いのかしら。