Java Resultset getDate()返回了不正确的日期值

Java Resultset getDate()返回了不正确的日期值,java,sql-server-2008,date,jdbc,resultset,Java,Sql Server 2008,Date,Jdbc,Resultset,当我尝试运行以下操作时,应用程序中会发生此错误: SELECT send_day FROM types WHERE ID_TYPE = 4 查询执行返回的日期比列值早2天 在Java app中恢复此值的步骤如下: java.sql.Date dataSQL = retorno.getDate(1); 我使用的是SQLJDB4.0驱动程序,数据库版本是2008 帖子评论的一些答案: 数据库的值为2013-08-22,返回值为2013-08-20 我的时区是UTC-03:00。在数据库中,我执行

当我尝试运行以下操作时,应用程序中会发生此错误:

SELECT send_day FROM types WHERE ID_TYPE = 4
查询执行返回的日期比列值早2天

在Java app中恢复此值的步骤如下:

java.sql.Date dataSQL = retorno.getDate(1);
我使用的是SQLJDB4.0驱动程序,数据库版本是2008

帖子评论的一些答案:


数据库的值为2013-08-22,返回值为2013-08-20


我的时区是UTC-03:00。在数据库中,我执行以下命令:

选择SYSDATETIMEOFFSET()
返回:2013-08-22 11:49:12.4010367-03:00我更新了4-4.0版本的SQLJDBC,问题已经解决。

我更新了4-4.0版本的SQLJDBC,问题已经解决。

也许,像Excel一样,Java使用1899-12-30作为“第0天”,而不是1900-01-01?请包括数据库中的值,以及从
结果集
检索到的值,以及存储在数据库中的数据的本地时区和(实际或预期)时区。Java使用1970-01-01作为“第0天”。时区可能有问题(请参阅getDate(int columnIndex)与getDate(int columnIndex,Calendar cal))数据库的值为2013-08-22,返回值为2013-08-20。我的时区为UTC-03:00。在数据库中,我执行以下命令:select SYSDATETIMEOFFSET(),返回:2013-08-22 11:49:12.4010367-03:00也许,像Excel一样,Java使用1899-12-30作为“第0天”,而不是1900-01-01?请按照数据库中的原样包含该值,以及从
结果集
和您的本地时区和存储在数据库中的数据的(实际或预期)时区。Java使用1970-01-01作为“第0天”。时区可能有问题(请参阅getDate(int columnIndex)与getDate(int columnIndex,Calendar cal))数据库的值为2013-08-22,返回值为2013-08-20My时区为UTC-03:00。在数据库中,我执行以下命令:select SYSDATETIMEOFFSET(),返回值为:2013-08-22 11:49:12.4010367-03:00