Groovy (Java) хранит время в миллисекундах в базе данных TransactSQL (Microsoft SQL Server 2008 R2)

Здравствуйте, у меня есть приложение Grails, которое до сих пор использует java.util.Date для хранения значения времени в базе данных Microsoft SQL Server.

Я загружаю значения даты из файла .csv в этом формате:

java.util.Date send_date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").parse(data[1]);

Если я смотрю переменную send_date с помощью отладчика, поле для миллисекунд имеет правильное значение millis = 241

Переменная send_date типа java.util.Date создает столбец Data Type = datetime в моей базе данных, но тогда значение в базе данных равно 2007-10-04 10:10:53.240 Это означает, что миллисекунды неверны. Он всегда появляется случайным образом, иногда это правильное количество миллисекунд, иногда +1 или -1.

Кто-нибудь знает другой тип данных, совместимый с моей базой данных, я уже пробовал java.sql.Date, но тогда у меня нет конструктора для добавления этого формата "yyyy-MM-dd HH:mm:ss.SSS" Если кто-нибудь знает, как я могу создать другой объект даты с этим форматом ввода, пожалуйста, дайте мне знать: )


person Viktor Carlson    schedule 24.12.2012    source источник


Ответы (1)


Тип данных DATETIME SQL Server имеет разрешение 3 мс. Если вам нужно более высокое разрешение, используйте тип данных DATETIME2. Он имеет разрешение 100 нс.

person Sebastian Meine    schedule 24.12.2012