Oracleの異なるテーブルに時間を格納するためにJavaのjava.sql.timestampおよびjava.util.dateを使用しています。すべてのOracle列はタイムスタンプです。Java Timestamp Oracleのタイムスタンプの異なるケースで12 PMを格納する際の異常な動作
12:02 PM時間(12:00〜12:59 PMの時間)を節約している間に問題が発生しています。それはここで12時02分AM
すなわち、それは正しいといくつかの間違ったで保存するいくつかのテーブルでは例は以下のとおりです。
1)Javaで:
java.sql.TimeStamp timestamp = new Timestamp(new Date().getTime());
新しい日付の上に()を返します - 」 Mon May 16 12:02:02 EST 2016 "
Oracleの列マッピングはタイムスタンプのみです。この特定の表では、Oracleタイムスタンプ - > "16/MAY/16 12:02:02.000000000 AM"が格納されています。 トランザクションとしてAMの代わりにPMでなければならないので間違っています。 は正午に実行されました。
上記の表では、Oracleのすべてのタイムスタンプには、末尾に000000000ミリ秒があります。 Javaでは
2):新日以上
java.sql.TimeStamp timestamp2 = new Timestamp(new Date().getTime());
は()を返します - "12時51分01秒EST 2016月5月16日"
Oracleの列マッピングは唯一のタイムスタンプです。この特定の表では、Oracleタイムスタンプを「16/MAY/16 16/MAY/16 12:51:01.170000000 PM」として保管します。それはPMだけでなければならないので正しいです。 上記の表では、Oracleのすべてのタイムスタンプには、末尾にms単位の値があります。 Javaの
で3)
Date date = new Date();
店では、Oracleのタイムスタンプ列に直接日付と正常に動作します。 Oracle Columnには "16/MAY/16 12:02:03.446000000 PM"が格納されます。
なぜタイムスタンプの使用に違いがあるのか分かりません。
私は、データベースにオブジェクトを挿入するためにHibernateを使用しています。
誰でもここでお手伝いできますか?私はあなたのコードの正確さに疑問
おかげ ニティン
どのようにデータベースに挿入しますか?バインドパラメータとして渡していますか?または、動的SQLを使用する文字列として? – MT0
タイムスタンプではなく、誤った時刻を実際に表示する列はありますか?私はあなたがタイムスタンプであると言ったことは知っていますが、それは正しいとは思われません。または、いくつかのプレーンタイムスタンプは、他のタイムゾーンまたはローカルタイムゾーンですか?もしそうなら、セッションのNLS設定をチェックすることができます.12時間から24時間フォーマットに切り替える暗黙のキャストまたは変換があると思われます。あなたの実際のNLS値はそれを正しく説明するのに役立ちます。 –
@ MT0:データベースの挿入にHibernateを使用しています。 –