1

Java アプリケーションから SQL Server に接続するために sqljdbc4.jar を使用しています。テーブルに日付フィールドがあります。Sql Server Management Studio から確認すると正常に動作しています。しかし、Java では、すべての日付が 2 日欠落しています。

例えば;

私の日付: 2012-01-10

Java の日付: 2012-01-08

PreparedStatement stmt = conn.prepareStatement("SELECT * FROM table1", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
ResultSet rs = stmt.executeQuery();
rs.next();
System.out.println(rs2.getDate("dateCol").toString());

なんで?

4

4 に答える 4

1

sqljdbc4.jar バージョン 4 を試したところ、修正されました。バージョン 2 でも問題ありません。バグのあるバージョンは 3 のみです。バージョン 4 のダウンロード リンク

回答ありがとうございます。

于 2012-05-08T14:26:09.563 に答える
0

どのバージョンのSQLServerとどのデータ型を使用していますか?SQlServer2008には6つの「日付と時刻」のデータ型があります。

date
datetimeoffset
datetime2
smalldatetime
datetime
time

使用しているものがJavaまたは使用しているドライブでサポートされていない可能性があります。Date特に、SQLServer2008の新機能を使用している場合

于 2012-05-08T08:56:48.850 に答える
0

私は数週間、やや似たような問題に直面しました。SQL日付と入力されたOracleテーブルにJava日付を保存する必要がありました。Java 日付を SQL 日付に直接キャストすることはできません。以下は私がしたことです。

java.util.Date jDate = myObj.getDate();
java.sql.Date sDate = new java.sql.Date(jDate.getTime());
于 2012-05-08T15:09:50.593 に答える
0

@Eugenio Cuevasが言ったように、日付をフォーマットしてみてください

.toString メソッドの代わりに yyyy.MM.dd 形式で SimpleDateFormat を使用してみてください。

あなたの日付の例を見ているからです。差が2日になる前に私が直面した問題のようなものかもしれません

1- 2012-01-10 および 2012-01-08 yyyy-mm-dd 2- 12-01-10 および 12-01-08 yy-mm-dd

それが私の問題の原因

于 2012-05-08T09:01:45.380 に答える