Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Непонятки с датой  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1198
SQL Server 2008 R2

Declare  @PeriodEnd datetime

set @PeriodEnd = '20170131 23:59:59.999'
select @PeriodEnd --20170201 00:00:00.000 Округлилось(?) в большую сторону

set @PeriodEnd = '20170131 23:59:59.998'
select @PeriodEnd --20170131 23:59:59.997 Округлилось в меньшую сторону


Собственно вопрос, почему?
Мне нужно было получить месяц окончания периода. Месяц из-за такого странного округления получался февраль, долго не мог врубиться откуда он взялся :(
13 окт 17, 15:35    [20868028]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с датой  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
точность типа данных datetime - 3 миллисекунды
13 окт 17, 15:37    [20868034]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с датой  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36989
Вы же в курсе, что у datetime точность 0,00333 секунды?
13 окт 17, 15:38    [20868037]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с датой  [new]
Дедушка
Member

Откуда: Город трёх революций
Сообщений: 5111
в доке прям и написано:
Accuracy - Rounded to increments of .000, .003, or .007 seconds
13 окт 17, 15:41    [20868043]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с датой  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6801
и корень всего этого
https://support.microsoft.com/ru-ru/help/931279/sql-server-timing-values-may-be-incorrect-when-you-use-utilities-or-te
13 окт 17, 15:45    [20868057]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с датой  [new]
vborets
Member

Откуда:
Сообщений: 164
minva,

Declare  @PeriodEnd datetime2
13 окт 17, 15:52    [20868079]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с датой  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36989
TaPaK
и корень всего этого
https://support.microsoft.com/ru-ru/help/931279/sql-server-timing-values-may-be-incorrect-when-you-use-utilities-or-te
При чем здесь точность функций определения времени, когда время задается константой?
13 окт 17, 16:14    [20868142]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с датой  [new]
minva
Member

Откуда: г. Калуга
Сообщений: 1198
Гавриленко Сергей Алексеевич
Вы же в курсе, что у datetime точность 0,00333 секунды?


Теперь уже да, спасибо :)
13 окт 17, 16:28    [20868175]     Ответить | Цитировать Сообщить модератору
 Re: Непонятки с датой  [new]
iap
Member

Откуда: Москва
Сообщений: 46983
minva,

Показанная вами дата практически и не нужна никогда.
Делайте так:
Declare  @PeriodEnd datetime

set @PeriodEnd = '20170201';

SELECT * FROM [Table] WHERE [Date] < @PeriodEnd;
13 окт 17, 17:56    [20868402]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить