2015-04-25 2 views
0

У меня есть этот код, но он не работает. У меня есть сообщение об ошибке:Java Timestamp to MySQL Timestamp

"com.mysql.jdbc.MysqlDataTruncation: усечение данных: Неправильное значение даты и времени: '' для столбца 'Datum_zalozeni' в строке 1"

pstmt = conn.prepareStatement(INSERT); 
       Timestamp ts = u.getDatum_zalozeni(); 
       System.out.println(ts); 
       pstmt.setTimestamp(1, ts); 
       pstmt.setInt(2, u.getId_klient()); 
       pstmt.executeUpdate(); 

Моя база данных является:

CREATE TABLE Ucet 
(
    Id_Uctu Int NOT NULL auto_increment primary key, 
    Datum_zalozeni Timestamp NOT NULL, 
    Id_klient Int NOT NULL 
) 
; 

Где ошибка? Я думаю, что код правильный.

+0

Можете ли вы разместить значение в переменной «INSERT»? – JFPicard

+0

private static String INSERT = "вставить в значения Ucet (null,?,?)"; Когда вы вставляете метку времени вручную, она работает. – user3640712

ответ

0

У меня есть код для создания системной метки времени. Он устанавливает 0 вместо 979. Посмотрите.

import java.sql.Timestamp; 
import java.text.DateFormat; 
import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.Calendar; 
import java.util.Date; 

public class TimestampTest 
{ 
public static void main(String[] args) 
{ 
    try 
    { 
     System.out.println("System Date: " + generateTimestamp("yyyy-MM-dd HH:mm:ss")); 
    } 
    catch (Exception e) 
    { 
     e.printStackTrace(); 
    } 
} 

public static Timestamp generateTimestamp(String format) 
{ 
    Timestamp timestamp = null; 

    try 
    { 
     SimpleDateFormat dateFormat = new SimpleDateFormat(format); 

     Date date = dateFormat.parse(generateDate(format)); 

     timestamp = new Timestamp(date.getTime()); 
    } 
    catch (ParseException e) 
    { 
     e.printStackTrace(); 
    } 

    return timestamp; 
} 

public static String generateDate(String format) 
{ 
    Date date = Calendar.getInstance().getTime(); 

    DateFormat dateFormat = new SimpleDateFormat(format); 

    return (dateFormat.format(date)); 
} 
} 
+0

Работает. Огромное спасибо. Но я не знаю, почему это не сработало, потому что я использую manualy: «INSERT INTO ucetnidb.Ucet values ​​(null, '2015-03-31 14: 24: 25.979', 1); и это работа. – user3640712

0

MySQL обычно принимает отметки времени в формате «2013-12-06 14:24:34». Было бы полезно, если вы расскажете, какое именно значение вы пытаетесь вставить в базу данных.

Timestamp ts = u.getDatum_zalozeni(); 
System.out.println(ts); 
pstmt.setTimestamp(1, ts); 

Что такое ts?

+0

Это ts: 2015-04-25 16: 17: 22.979 – user3640712

+0

Можем ли мы удалить 979 из ts и сохранить его до 2015-04-25 16:17:22? Я говорю, вызывают его ошибку MysqlDataTruncation –

+0

, но как я могу удалить 979? Это формат timestamp. – user3640712