【问题标题】:Persisting date vales into mySql database via Apache POI通过 Apache POI 将数据值保存到 mySql 数据库中
【发布时间】:2013-03-26 09:45:31
【问题描述】:

我正在使用 Apache POI 读取 excel 数据集,并使用 JPA 持久保存到数据库中。这工作正常,除了我需要使用相同的方法将一组日期/时间值正确地输入数据库(使用 apache poi 读取,然后持久保存到数据库中)。目前我正在使用 SimpleDateFormat 这真的没有任何用处。我们需要查询此列,因此我需要在数据库中理想地使用 mySQL 日期。

时间/日期列的数据集示例

21/10/2012 13:20:00

Java

     Sheet sheet1 = wb.getSheetAt(0);

        String dateTimeFormat = "dd/MM/yyyy HH:mm:ss";
        SimpleDateFormat dateFormat = new SimpleDateFormat(dateTimeFormat);


        for (int i = 1; i <= sheet1 .getLastRowNum(); i++) {

            row = sheet1 .getRow(i);
            String sheet1Id = i+"";

            double excelDateTime = row.getCell(0).getNumericCellValue();
            Date javaDateTime=HSSFDateUtil.getJavaDate(excelDateTime,false);
            String dateTime = dateFormat.format(javaDateTime);

            Table1 sheet1=new Table1 (sheet1Id ,dateTime)
            addToDatabase(table1); 

        }

对此有任何解决方案以及关于在 mySQL 数据库中创建此列的最佳方式的任何建议(该列目前是 varchar)?

干杯

【问题讨论】:

  • 你为什么使用VARCHAR而不是像DATETIMETIMESTAMP这样明智的东西?
  • 到目前为止我一直在使用 varchar - 只是为了让它以字符串格式工作 - 我在过去的几周里刚刚学习 sql,TIMSTAMP 是我应该使用的类型吗?

标签: java mysql date jpa apache-poi


【解决方案1】:

使用 JPA/JDBC 时,java.util.Date 对应于 DATETIME 列(或 TIMESTAMP 或 DATE,请参阅MySQL-manual 以了解它们的细微差别)。由于您已经直接从 HSSFDateUtil 获得了 Date 对象,因此您不需要任何进一步的转换。

PS:为什么不直接使用HSSFCell.getDateCellValue()

【讨论】:

  • 谢谢,是的,这就是我目前所拥有的 - 它没有以我想要的格式显示在 mySql 中,但我认为这不是问题,因为我可以编辑数据在我的图形用户界面前端。重要的是查询可以正确执行,干杯。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-08
  • 2014-02-17
  • 2018-02-02
  • 1970-01-01
  • 1970-01-01
  • 2017-09-01
  • 2011-10-14
相关资源
最近更新 更多