gpt4 book ai didi

Java JDBC : dates consistently two days off

转载 作者:IT老高 更新时间:2023-10-28 20:28:38 24 4
gpt4 key购买 nike

我正在使用 Java JDBC 将日期写入 SQL Server 2008,然后将其读回。
回读的日期始终比实际写入的日期早两天。

我正在使用准备好的语句插入包含日期字段的行。日期值由以下提供:

java.sql.Date todaysDate = new java.sql.Date(System.currentTimeMillis()) ;
System.out.println(todaysDate.toString()) // -> 2012-07-02
ps.setDate(8, todaysDate);

将日期写入数据库后,如果我运行,SQL 服务器会显示正确的日期:

select date from table_name where date!=null // ->2012-07-02

如果我通过 JDBC 运行相同的查询,则使用

从结果集中检索日期值
java.sql.Date sqlDate = rs.getDate("date") ;
sqlDate.toString() // ->2012-06-30

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

我认为这将是一个众所周知的问题,但我可以通过 Google 搜索找到的关于“请假两天”问题的唯一引用没有明确的答案。

有什么想法吗?

beeky(生活在过去)

最佳答案

错误的 JDBC 驱动程序

原来问题出在 MS JDBC 驱动程序上。我尝试了日期类型和日期转换的所有可能组合,但没有任何效果。经过大量搜索(应该先这样做!)我看到了an older SO entry上的评论这暗示问题出在 Microsoft 的版本 3 JDBC 驱动程序上。我得到了最新的驱动程序,版本 4.something,问题就消失了。

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

-=beeky

关于Java JDBC : dates consistently two days off,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11296606/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com