2012-05-08 10 views
1

sqljdbc4.jarを使用して、SQL ServerをJavaアプリケーションから接続しています。私はテーブルに日付フィールドを持っています。 SQL Server Management Studioからチェックすると正常に動作します。しかし、Javaでは、すべての日付が2日欠けています。SQLとJavaは異なる日付を返しますか?

たとえば、

私日時:Javaで2012-01-10

日: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()); 

なぜ?

+1

SimpleDateFormatを.toStringメソッドの代わりに 'yyyy.MM.dd'形式で使用できますか? –

+0

データベースとjavaの両方のロケール設定を確認してください。どちらのタイムゾーンも同じであることを確認してください。 – Pablo

+2

同じエラー[ここ](http://stackoverflow.com/questions/7982969/how-is-sql-servers-timestamp2-supposed-to-work-in-jdbc);他のドライバJTDSを使用することを提案しています。 –

答えて

1

私はちょうどそれが固定し、あるsqljdbc4.jarバージョン4を試してみました。また、バージョン2では問題ありません。盗まれたバージョンは3です。Download link for version 4

お返事ありがとうございます。

+0

Tomcatを使用している場合は、このjarの古いバージョンの 'lib'ディレクトリもチェックすることを忘れないでください。あなたのwebappにあるものはすべて上書きされます。 – Cfold

0

どのバージョンのSQL Serverとどのデータ型を使用していますか? 6「日付と時刻」は、SQL Server 2008でdata typesあります

date 
datetimeoffset 
datetime2 
smalldatetime 
datetime 
time 

多分あなたが使用している1は、Javaにするか、使用しているドライブでサポートされていません。あなたがDateを使用している場合@EugenioクエバスはあなたがYYYY.MM.DD形式の代わりに、.toStringメソッドでてSimpleDateFormatを使ってみてもらえ日に

をフォーマットしてみてください 言ったように、特別にSQL Server 2008の

0

で新しく追加されましたか?

あなたはあなたの日付を見ているので、前に直面していたような問題かもしれない 違いは2日です。

1-2011-01-10と2012-01-08 yyyy-mm-dd 2-12-01-10と12-01 -08 YY-MM-DD

何が私の問題を引き起こしたこと

0

私は幾分似たような問題のカップルに直面していました。私はSQLの日付が入力されているOracleのテーブルにJavaの日付を保存しなければならなかった。 java日付をsql日付に直接キャストすることはできません。以下は私がしたことです。

java.util.Date jDate = myObj.getDate(); 
java.sql.Date sDate = new java.sql.Date(jDate.getTime()); 
関連する問題