web-dev-qa-db-ja.com

データの切り捨て:誤った日時値: ''

JDBCを介してMySqlデータベースに日付を保存するためのサンプルJSPコードで誰でも私を助けることができますか?以下のコードを実行しようとすると、次の例外が発生します。

com.mysql.jdbc.MysqlDataTruncation:データの切り捨て:不正なdatetime値:行1の列 'date'の ''

この問題を克服するには?以下は私のコードです:

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);
}
9
user2951465

準備済みステートメントに日付を設定するには、値のタイプを変更する必要があります。

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());

stringの日付をJava.sql.Dateに変換し、別のメソッドを使用します。

preparedStatement.setDate(4,dateDB);
16
MartenCatcher

同様のエラーが発生しました。 mysql-connector-Javaのjarバージョンを更新するだけでよいことがわかりました(mavenを使用)

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-Java</artifactId>
        <version>...</version>
    </dependency>
12

誰かが@Temporalとして注釈が付けられたデータ型のエンティティフィールドに同様のエラーがある場合、解決策は注釈値TemporalType.TIMESTAMPTemporalType.TIMEに置き換えることでした。

@Temporal(TemporalType.TIMESTAMP)
private Date dateField;

次のようになります。

@Temporal(TemporalType.TIME)
private Date dateField;

(少なくとも私にとっては)コードを変更せずにこの問題を解決する別の方法は、より高いTomcatバージョンでアプリケーションを実行することでした。

0

私はこれが古いスレッドであることを知っていますが、これらの解決策のどれも私のために問題を解決しませんでした。私のために働いたのは、休止状態をバージョン5.2.10.Finalにアップグレードすることでした( this SO post を参照)。

Spring BootおよびSpring Data JPA 1.5.4.RELEASEおよびhibernate 5.2.10.Finalの実行。

0
jtcotton63