Проблема вставки JDBC столбца даты и времени в SQL Server 2008 - PullRequest
1 голос
/ 30 декабря 2010

У меня есть таблица со столбцом, который является DATETIME в базе данных SQL Server 2008.Вставляемые даты не являются временными метками в том смысле, что использование NOW для вставки будет приемлемым.Дата генерируется немного перед вставкой, и я хотел бы сохранить это значение.

Дата и время сериализуются как строки в формате yyyy-mm-dd hh:mm:ss.[fff...], а затем перед вставкой преобразуются в объект метки времени JDBC.

Проблема, с которой я сталкиваюсь в SQL Server, заключается в том, что он преобразует значение в TIMESTAMP перед вставкой, а затем жалуется на это:

com.microsoft.sqlserver.jdbc.SQLServerException: 
Cannot insert an explicit value into a timestamp column. 
Use INSERT with a column list to exclude the timestamp column, 
or insert a DEFAULT into the timestamp column.

Как мне просто вставить столбец DATETIME безконверсия?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 30 декабря 2010

Тип данных SQL Server TIMESTAMP не является типом данных типа даты. Это сгенерированное сервером значение, используемое для обеспечения согласованности данных. Если вы храните данные даты и времени, избегайте использования типа данных TIMESTAMP.

Итак, не конвертируйте в объект метки времени JDBC. Данные могут быть вставлены как строковое значение. Обратите внимание, что указанный вами формат в порядке, но fff... должно быть 3 цифры, но не более 3 цифр для типа данных SQL Server DATETIME.

0 голосов
/ 30 декабря 2010

Если столбец определен как метка времени, вот цитата из электронной документации по SQL Server:

Тип данных метки времени SQL Server не имеет ничего общего со временем или датой.Временные метки SQL Server - это двоичные числа, указывающие относительную последовательность изменений данных в базе данных.Тип данных временной метки изначально был реализован для поддержки алгоритмов восстановления SQL Server.

В нем также указывается Никогда не использовать столбцы временной метки в ключах, особенно в первичных ключах, поскольку значение временной метки изменяется при каждом изменении строки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...