1 在java中只有Date類型,這樣數據存儲到MySQL會出現問題,前台提交的數據,比如2018-03-20 17:30:59,后台用Date接受的時候,由於Date只精確到天,所以默認接收時間為2016-10-10 00:00:00,保存到mysql數據庫之后,重新取出數據的時候又會發現,數據為2018-03-20 00:00:00.0,無緣無故在后面多了一個.0。
2 解決方法
① 提取數據
如果要從MySQL中獲取yyyy-MM-dd HH:mm:ss 日期格式,首先必須使用 rs.getTimestamp("insert_dt")方法,其中"insert_dt" 是數據庫時間字段,類型為datetime;然后通過SimpleDateFormat 時間格式化類,將取出來的時間轉為String類型
先來對比rs獲取不同日期時間格式的方法
System.out.println(rs.getDate("insert_dt")); System.out.println(rs.getTime("insert_dt")); System.out.println(rs.getTimestamp("insert_dt"));
輸出結果:
2018-03-19 22:03:21 2018-03-19 22:03:21.0
可以看到通過getTimestamp獲取的日期格式最后還有一位數(2018-03-19 22:03:21.0),需要將rs.getTimestamp("insert_dt") 轉為String類型
String timeStamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(rs.getTimestamp("insert_dt"));
System.out.println(timeStamp);
輸出結果:
2018-03-19 21:51:57
② 存儲數據
Date date = new Date(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //從前端或者自己模擬一個日期格式,轉為String即可 String dateStr = format.format(date); String sql="insert into t_pay_info(title,content,price,type_id,contact,phone,insert_dt)" +"values(?, ?, ?, ?, ?, ?, ?);"; String[] params = {"初中英語輔導","擅長初中英語輔導,能夠與學生進行良好的溝通,穩步提升學生成績","100", "3","Latinyrain","15185077780",dateStr}; DBUtil.update(sql, params);