java - 如何使用 Java 更改 mm-dd-yyyy(来自 csv 文件的数据)的格式以在 MySql 中存储为 yyyy-mm-dd

标签 java mysql database date

数据存在于 csv 文件中。我正在使用 CSVReader 读取每一行,然后将相应的值存储在数据库中。所以在读取字符串时,我使用“-”(日期格式类似于 01-02-1997)拆分日期字符串并存储在一个数组中,然后交换数组的三个元素并将其存储回数据库中。有没有更好的办法。

csv 文件中的示例行数据:

10001   MICHELLE    VILLEGAS3   Savings SRINATH MICHELLE.VILLEGAS3@NOBODY.COM   Y   10-7-18 1050 WEST FIFTH STREET      AZUSA   IND 917023308

仅以逗号分隔。

private static void readCsv(String tableName) throws FileNotFoundException, IOException, SQLException {
    CSVReader csvreader = null;

    try{
        Reader reader = Files.newBufferedReader(Paths.get(filePath));
        csvreader = new CSVReaderBuilder(reader).withSkipLines(1).build();
        sql = "insert into ? values (?,?,?,?,?,?,?,?,?,?,?,?,?)";
        ManageDBResource.createConnectionToDB();
        pstmt = ManageDBResource.conn.prepareStatement(sql);
        pstmt.setString(1, tableName);

        String[] rowData = null;

        while((rowData = csvreader.readNext()) != null) {

            int i = 2;

            for (String data : rowData) {

                if(i == 8 && data != null && rowData[12] != "IND") {
                    String[] date = data.split("-");
                    String temp = date[0];
                    date[0] = date[1];
                    date[1] = temp;
                }
                pstmt.setString(i++,data);
                //System.out.print(data + " ");
            }
            //System.out.println();
        }
        int result = pstmt.executeUpdate();
        if(result == 1) {
            System.out.println("Data loaded Successfully.");

        }
    }
    finally {
        pstmt.close();
        csvreader.close();
    }

我究竟如何在 java 程序中使用 STR_TO_DATE() 函数。 抱歉,我是编程新手,感谢您的帮助。

最佳答案

为什么不用java的SimpleDateFormat

例如

java.text.SimpleDateFormat source = new java.text.SimpleDateFormat("MM-dd-yyyy");
java.util.Date date = source.parse(data);
java.text.SimpleDateFormat target = new java.text.SimpleDateFormat("yyyy-MM-dd");
data = target.format(date);

或更好:现代 java.time API

DateTimeFormatter source = DateTimeFormatter.ofPattern("MM-dd-yyyy");
LocalDate date = LocalDate.parse(data, source);
DateTimeFormatter target = DateTimeFormatter.ofPattern("yyyy-MM-dd");
data = date.format(target);

关于java - 如何使用 Java 更改 mm-dd-yyyy(来自 csv 文件的数据)的格式以在 MySql 中存储为 yyyy-mm-dd,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51400003/

相关文章:

java - 子字符串替换问题

java - JDBC 代码是否与单一数据库类型相关?

mysql - 多字段报告,在 MySql 中自定义计数

java - 在负载较重的数据库的查询中使用子选择应考虑什么?

java - JPA 和 Derby 性能

java - Hibernate OnetoMany 和 ManyToOne 抛出异常

MySQL 认证指南练习 Qn - View 的列名

mysql - 关系数据库设计 - 大学提供的类(class)

database - Golang(带 gocql 驱动程序)不返回 Cassandra DB 中的所有条目

java - 动态确定对象的变量名?