首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Java JDBC:日期连续两天后

Java JDBC:日期连续两天后
EN

Stack Overflow用户
提问于 2012-07-02 23:24:36
回答 9查看 9.6K关注 0票数 26

我正在使用Java JDBC将一个日期写入SQL server2008,然后将其读回。

回读的日期始终比实际写入的日期早两天。

我用一条准备好的语句插入包含日期字段的行。日期值由以下内容提供:

代码语言:javascript
复制
java.sql.Date todaysDate = new java.sql.Date(System.currentTimeMillis()) ;
System.out.println(todaysDate.toString()) // -> 2012-07-02
ps.setDate(8, todaysDate);

将日期写入数据库后,如果我运行以下命令,SQL server将显示正确的日期:

代码语言:javascript
复制
select date from table_name where date!=null // ->2012-07-02

如果我通过JDBC运行相同的查询,然后使用以下命令从结果集中检索日期值

代码语言:javascript
复制
java.sql.Date sqlDate = rs.getDate("date") ;
sqlDate.toString() // ->2012-06-30

插入的行是表中唯一具有非空日期的行,因此这似乎不是读取错误记录的情况。

我认为这将是一个众所周知的问题,但我在谷歌上搜索“两天休假”问题时唯一能找到的参考资料没有明确的答案。

有什么想法吗?

beeky (活在过去)

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2012-07-12 21:11:48

错误的JDBC驱动程序

原来问题出在MS JDBC驱动程序上。我尝试了所有可能的日期类型和日期转换组合,但都不起作用。经过大量的搜索之后(应该先这样做!)我在an older SO entry上看到一条评论,暗示问题出在微软的3JDBC驱动程序上。我得到了最新的驱动程序,版本4,然后问题就解决了。

感谢所有试图提供帮助的人。特别感谢您,Mike,您抽出时间发布了一个解决方案。

-=beeky

票数 22
EN

Stack Overflow用户

发布于 2017-07-27 23:44:09

对于那些使用maven的人,在java 8中使用以下代码:

代码语言:javascript
复制
 <dependency>
    <groupId>com.microsoft.sqlserver</groupId>
    <artifactId>mssql-jdbc</artifactId>
    <version>6.2.1.jre8</version>
 </dependency>

如上所述,如果您使用的是旧版本,则可能会遇到此问题,并且不容易调试。

票数 5
EN

Stack Overflow用户

发布于 2015-05-11 20:41:48

我最近遇到过几次这个问题,在记住如果字段是date类型的时候会发生这种情况,将字段类型切换为datetime类型就解决了这个问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11296606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档