[英]How to convert a date a user selects in MM-dd-yyyy format to the format yyyy-MM-dd in Java
[英]How to change format of mm-dd-yyyy(of data from csv file) to be stored as yyyy-mm-dd in MySql using Java
數據存在於csv文件中。 我正在使用CSVReader讀取每一行,然后將相應的值存儲在數據庫中。 因此,在讀取字符串時,我使用“-”(日期格式類似於01-02-1997)分割日期字符串,並將其存儲在數組中,然后交換數組的三個元素並將其存儲回db中。 有沒有更好的辦法。
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.sql.date
。 現在,使用prepared語句的setDate方法將日期傳遞給您的插入查詢:
pstmt.setDate(i++, dateObject);
不必擔心mysql將如何存儲它。 您始終可以查詢數據庫以獲取所需格式的日期值。 可以將您使用的工具(例如SQL Developer等)配置為以特定格式顯示日期。
您可以使用
final DateTimeFormatter dateFormat = DateTimeFormatter.ofPattern("MM-dd-yyyy");
LocalDate localDate = LocalDate.parse("01-20-2018", dateFormat);
pstmt.setDate(i, java.sql.Date.valueOf(localDate));
如果解析失敗,則parse方法將引發DateTimeParseException
。
所以你可以
LocalDate localDate = null;
try {
localDate = LocalDate.parse("01-20-2018", dateTimeFormat);
} catch(DateTimeParseException e) {
e.printStackTrace();
//some action that should be taken in case it fails
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.