Когда я пытаюсь использовать значение java.sql.Timestamp для вставки в столбец DATETIME в MySQL 5.6, я всегда получаю эту ошибку:java.sql.Timestamp ошибка при вставке в DATETIME
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '' for column 'invoice_date' at row 1
Оригинальный разработчик этого проекта имел пользовательские JAR, которые создали подготовленные операторы, так что java.util.Date преобразуется в Timestamp для вставки в DATETIME и наоборот, а также для обработки подключений к базе данных. Обратите внимание, что это мое предположение, поскольку в нем нет документации. Попытка использовать временную метку для вставки в DATETIME себя через PreparedStatement были одни и те же результаты, используя что-то вроде:
ps.setTimestamp(3, new Timestamp(date.getTime()));
мне пришлось создать свою собственную связь, так что я могу использовать java.sql.Date, чтобы решить эту проблему. Однако в результате он обнуляет значение времени. Я использовал
ps.setDate(3, new java.sql.Date(date.getTime()));
И я получаю что-то вроде
2013-06-27 00:00:00
в таблице, так как мы знаем, java.sql.Date не сохраняет время.
Удивительно, но на сервере, использующем MySQL 5.0, это работает нормально. Я предполагаю, что значение миллисекунды в Timestamp приводит к тому, что проблема ливается в DATETIME? Поскольку оригинал работает в более старых версиях. Есть ли способ разрешить это без переустановки всего с 5.0?
Использование Java.util.Date –
Я не могу использовать java.util.Date в PreparedStatement. Сначала его нужно включить в java.sql.Date. –