Как мне округлить DateTime до 6 символов после второго? - PullRequest
2 голосов
/ 09 марта 2011

У меня есть таблица с именем Test, и у меня есть столбец с именем Date, который имеет тип данных Datetime. Мое требование - получить значения даты в следующем формате: ГГГГ-ММ-ДД чч: мм: сс.123456.

Но я получаю такие значения, как:

Date
2011-03-09 11:35:03.890

Итак, я изменил тип данных столбца Дата на Datetime2, так что теперь я получаю значение как:

Date
2011-03-09 11:35:03.8900000

Проблема в том, что я хочу только 6 символов после этих секунд, но я получаю семь. Может ли кто-нибудь помочь мне в этом?

Пример:

Если Дата имеет значение 2011-03-07 11: 35: 03.1234567, тогда она должна округлить значение до

2011-03-07 11: 35: 03.1234570 и после этого мне нужно только шесть символов после этой секунды, поэтому

Я хочу что-то вроде этого:

Date
2011-03-07 11:35:03.123457

Ответы [ 2 ]

2 голосов
/ 09 марта 2011
DECLARE @d DATETIME2 = '2011-03-07 11:35:03.1234567'

SELECT CAST(CAST (@d AS DATETIME2(6)) AS CHAR(26))

Возвращает

2011-03-07 11:35:03.123457
0 голосов
/ 09 марта 2011

Вам нужно наложить точность, чтобы получить округление, а затем затягивать его, ограничивая символы. Смотрите следующий пример:

smalldatetime  2007-05-08 12:35:00
datetime       2007-05-08 12:35:29.123
datetime2      2007-05-08 12:35:29.1234567
datetimeoffset 2007-05-08 12:35:29.1234567 +12:15

Попробуйте:

CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(6)) AS CHAR(26)

Ссылка MSDN .

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