DBUtils 无法将字符串转换为日期

Posted

技术标签:

【中文标题】DBUtils 无法将字符串转换为日期【英文标题】:DBUtils cannot convert string to date 【发布时间】:2014-09-24 01:30:34 【问题描述】:

我正在使用 apache dbutils。我有一个带有 java.util.Date 属性的对象。当我执行以下代码时,sql 失败

select name, startDate from myTable

      try 
        QueryRunner run ;
        run = new QueryRunner();

        ResultSetHandler h = new BeanListHandler(clazz);
        ArrayList<T> result ;
        result = (ArrayList) run.query(connection, sql, h);
        return result;
     catch (SQLException ex) 
        Logger.getLogger(AbstractDataMapper.class.getName()).log(Level.SEVERE, null, ex);
        throw new AppException("Sql fetch failed for: " + sql,ex);
    


我查看了代码,发现 BeanProcessor、processColumn 正在遍历除 Date 之外的所有属性。对于 Date,它正在调用 rs.getObject(index)。根据我的调试器,这会返回字符串并导致设置失败。有什么想法吗?

更换驱动程序?我正在使用 jtds 1.2.5。它应该为 getObject 方法返回 Date 吗?

【问题讨论】:

【参考方案1】:

我尝试更改 jtds 驱动程序版本,但没有成功。一旦我将数据类型从日期更改为日期时间,它就可以毫无问题地开始工作。我也试过 datetime2 看看它是否会起作用。不行...万一有人遇到这个问题...后端是 SQLServer 2008R2 db。

【讨论】:

以上是关于DBUtils 无法将字符串转换为日期的主要内容,如果未能解决你的问题,请参考以下文章

Java - 使用DBUtils BeanListHandler将查询中的所有日期转换为JodaTime的DateTime

无法将特定的日期时间字符串转换为日期

无法将 yyyyMMddHHmmss 格式的字符串日期转换为 DateTime dart

java.text.ParseException:无法解析的日期:将 mm/dd/yyyy 字符串转换为日期

SQL Server 无法使用有效字符串将字符串转换为日期时间

使用非美国日期格式时,JsonConvert.DeserializeObject 无法将字符串转换为 DateTime