Округлить дату до полуночи - PullRequest
2 голосов
/ 26 августа 2011

Я пытаюсь изо всех сил, чтобы округлить дату, скажем:

 2011-08-26 11:33:21.653

Кому:

 2011-08-26 23:59:59.999

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

Ответы [ 2 ]

2 голосов
/ 26 августа 2011

Обратите внимание, что дата и время с точностью до 3,33 миллисекунд (1/300)

DATEADD(millisecond, -3, DATEADD(day, DATEDIFF(day, 0, '2011-08-26 11:33:21.653'), 1))

Обратите внимание: если это запрос диапазона, то обычно вы делаете это:

DateCol >= '20110826' AND DateCol < '20110827'

... не эти

DateCol >= '20110826' AND DateCol <= '2011-08-26 23:59:59.997'
DateCol BETWEEN '20110826' AND '2011-08-26 23:59:59.997'
2 голосов
/ 26 августа 2011

Округление сегодняшней даты до 3 миллисекунд до полуночи сегодня:

select DATEADD(day,DATEDIFF(day,'20010101',CURRENT_TIMESTAMP),'2001-01-01T23:59:59.997')

(или для столбца, переменной и т. Д. Заменить CURRENT_TIMESTAMP чем-то еще)

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