2013-03-27 2 views
3

Мы пытаемся лишить свободное время переменной DateTime:T-SQL DateTime для преобразования Даты - Толерантность

DECLARE @Date DateTime 

SET @Date = '01Jan2013 23:59:59.998' 
PRINT DATEADD(dd, 0, DATEDIFF(dd, 0, @Date)) 

SET @Date = '01Jan2013 23:59:59.999' 
PRINT DATEADD(dd, 0, DATEDIFF(dd, 0, @Date)) 

Результат:

1 январь 2013 12:00 утра
Jan 2 2013 12:00 AM

Почему 01Jan2013 23:59:59.999 возвращается как 2 янв., а не 1 января?

ответ

4

Поскольку в типе даты и времени нет .999 и .998. У вас только .990, .993 и .997.

Так .998 округляется до 0,997, в то время как .999 округляется вверх. Подробнее о типе.

+0

RTFM ... oops! Благодаря Frikozoid :-) –

Смежные вопросы