1

我正在使用 sqljdbc4.jar 从我的 java 应用程序连接 SQL Server。我的表中有一个日期字段。当我从 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

您使用的是哪个版本的 SQL Server 和哪种数据类型?SQl Server 2008 上有 6 种“日期和时间”数据类型:

date
datetimeoffset
datetime2
smalldatetime
datetime
time

Java 或您使用的驱动器可能不支持您使用的那个。特别是如果您使用Date的是 SQL Server 2008 中的新功能

于 2012-05-08T08:56:48.850 回答
0

就像@Eugenio Cuevas 说的,请尝试格式化日期

您可以尝试使用 SimpleDateFormat 和 yyyy.MM.dd 格式而不是 .toString 方法吗?

因为看着你约会的例子;可能就像我在差异为 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 回答
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 回答