使用Java向MySQL插入datetime,防止時分秒信息丟失

問題

  1. 使用java.util.Date無法直接插入MySQL,似乎 必須使用java.sql.Date
  2. 如果在MySQL中使用timestamp(時間戳),所能表示的時間有限
  3. 將java.util.Date插入MySQL的datetime時(使用preparedStatement),發現時分秒信息丟失

解決

Stack Overflow 上的問題

其實是個大神們早已解答過的問題,在該方案中不需要java.sql.Date類型。先獲取形如“2017/05/12 2:59:10”這樣一個字符串:

java.util.Date dt = new java.util.Date();

java.text.SimpleDateFormat sdf = 
new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

String currentTime = sdf.format(dt);

再將該值插入MySQL。
插入時,直接使用setString方法。(一開始沒想到這麼暴力,試了很多次才發現原來真真相就是這麼簡單……)

String sql = "insert into times values(?)";

pStatement = connection.prepareStatement(sql);
pStatement.setString(1, currentTime);

pStatement.execute();

如果直接使用字符串拼接將會出錯。


總結

還是要敢於嘗試呀。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章