データの切り捨て: 日時値が正しくありません: '' 質問する

データの切り捨て: 日時値が正しくありません: '' 質問する

JDBC を介して MySql データベースに日付を保存するサンプル JSP コードについて、どなたか教えていただけませんか? 以下のコードを実行しようとすると、次の例外が発生します。

com.mysql.jdbc.MysqlDataTruncation: データの切り捨て: 行 1 の列 'date' の datetime 値が正しくありません: ''

この問題をどうやって克服するのでしょうか? 以下は私のコードです:

Connection con = null;

String StaffName = request.getParameter("StaffName");
// String subcode = request.getParameter("subcode");
String hourId = request.getParameter("hourId");
if (hourId == null)
    hourId = "";
String day = request.getParameter("day");
if (day == null)
    day = "";
String date = request.getParameter("date");
try {
    Class.forName("com.mysql.jdbc.Driver");
    con = DriverManager.getConnection("jdbc:mysql://localhost:3306/StaffAllocation", "root", "success");

    // PreparedStatement stat = con.PrepareStatement();
    String updateString = "INSERT INTO tblstaffallocation (StaffName,hourId,daysId,date) VALUES (?,?,?,?)";
    PreparedStatement preparedStatement = con.prepareStatement(updateString);

    preparedStatement.setString(1, StaffName);
    preparedStatement.setInt(2, 0);
    preparedStatement.setInt(3, 0);
    preparedStatement.setString(4, date);
} catch (Exception e) {
    out.print(e);
}

ベストアンサー1

準備されたステートメントに日付を設定するには、値の型を変更する必要があります。

String date = request.getParameter("date");
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); // your template here
java.util.Date dateStr = formatter.parse(date);
java.sql.Date dateDB = new java.sql.Date(dateStr.getTime());

ここで、文字列の日付を java.sql.Date に変換し、別のメソッドを使用します。

preparedStatement.setDate(4,dateDB);

おすすめ記事