我正在使用Java JDBC将一个日期写入SQL server2008,然后将其读回。
回读的日期始终比实际写入的日期早两天。
我用一条准备好的语句插入包含日期字段的行。日期值由以下内容提供:
java.sql.Date todaysDate = new java.sql.Date(System.currentTimeMillis()) ;
System.out.println(todaysDate.toString()) // -> 2012-07-02
ps.setDate(8, todaysDate);
将日期写入数据库后,如果我运行以下命令,SQL server将显示正确的日期:
select date from table_name where date!=null // ->2012-07-02
如果我通过JDBC运行相同的查询,然后使用以下命令从结果集中检索日期值
java.sql.Date sqlDate = rs.getDate("date") ;
sqlDate.toString() // ->2012-06-30
插入的行是表中唯一具有非空日期的行,因此这似乎不是读取错误记录的情况。
我认为这将是一个众所周知的问题,但我在谷歌上搜索“两天休假”问题时唯一能找到的参考资料没有明确的答案。
有什么想法吗?
beeky (活在过去)
https://stackoverflow.com/questions/11296606
复制相似问题