Зернистость SQL datetime - PullRequest
       3

Зернистость SQL datetime

2 голосов
/ 02 марта 2011

У меня есть столбец datetime в БД, и когда я проверяю его настройку


DateTime dateTime = DateTime.Now;
state.LastUpdated = dateTime;
Assert.AreEqual(dateTime , state.LastUpdated);

Я получаю следующую ошибку
Assert.AreEqual failed. Expected:<3/2/2011 9:52:32 AM>. Actual:<3/2/2011 9:52:00 AM>.

Какова гранулярность даты и времени в SQL и можно ли настроить ее для большей детализации?

Ответы [ 3 ]

5 голосов
/ 02 марта 2011

SQL Server с точностью до округленных приращений 0, 3 и 7 миллисекунд http://msdn.microsoft.com/en-us/library/ms187819.aspx. Вы не можете настроить его для большей детализации.

.Net DateTime гораздо более гранулированный - меньше миллисекунд, он также может содержать тики. Вы должны учитывать это при утверждении теста.

Если вам нужна большая точность, вы всегда можете использовать bigint в Sql Server вместо DateTime и хранить количество тиков. (DateTime имеет конструктор, который принимает число тиков Int64.)

3 голосов
/ 14 марта 2011

Используйте datetime2 с точностью до 100 наносекунд. msdn.microsoft.com / EN-US / библиотека / bb677335.aspx

Отметил @Remus в комментарии, опубликовав его как ответ для потомков.

2 голосов
/ 02 марта 2011

SQL Datetime может представлять дату с точностью до долей секунды и, согласно: http://msdn.microsoft.com/en-us/library/ms187819.aspx: datetime values are rounded to increments of .000, .003, or .007 seconds

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