6

基本的に次のことを行うコードを見ています。

ResultSet rs = ps.executeQuery();
String myDateStr = rs.getString("MY_DATE"); //field is of type Date
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss'.0'");
Date myDate = sdf.parse(myDateStr);

一部の環境では最後の行が機能し、他の環境では解析不能な日付例外がスローされます。一部のシステムではデフォルトの日付形式が 2013-01-25 00:00:00.0 であり、他のシステムでは 2013-01-25 00:00:00 のようです。JVM、OS、および Oracle のバージョンは環境によって異なります (ただし、すべて Oracle を使用し、UNIX バリアントで実行されます)。

コードの変更は複雑な場合があります。rs.getString() から返される日付形式を一貫させるために設定できる環境変数などがあるかどうか疑問に思っていますか?

4

4 に答える 4

4

これを試して:

ResultSet rs = ps.executeQuery();

Date myDate = rs.getDate("MY_DATE"); 

またはこれ:

ResultSet rs = ps.executeQuery();
String myDateStr = rs.getString("MY_DATE"); 
Date myDate = valueOf(myDateStr);

日付の詳細: http://docs.oracle.com/javase/7/docs/api/java/sql/Date.html
ResultSet の詳細: http://docs.oracle.com/javase/7/docs/api /java/sql/ResultSet.html

于 2013-02-05T05:53:58.773 に答える
3

使用する代わりに

String myDateStr = rs.getString("MY_DATE") 

あなたが使用する必要があります

Timestamp timestamp = rs.getTimestamp("MY_DATE");

JDBC / データベースが日付変換を処理します。

于 2013-02-05T05:49:52.050 に答える
2

フィールドのタイプが の場合はDate、それを として読み取り、その後java.sql.Date必要な変換を行います。それ以外の場合は、データベースの実装に翻弄されます。

于 2013-02-05T05:49:49.990 に答える
0

私が使用している Oracle JDBC ドライバーの場合、形式はドライバー ライブラリにハードコードされているため、異なるドライバー バージョンが使用されている場合にのみ、システム間で異なるはずです。

ここで同じ質問に対する回答を得ようとする私の試みを参照してください: Where is the date format specified when reading a date as a string from JDBC ResultSet .

(別の質問をして申し訳ありませんが、あなたの質問には「それをしないでください」という非常に役立つ回答が何度も返されていたので、もう一度試しました...)。

于 2014-01-16T22:51:16.047 に答える