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

Откуда:
Сообщений: 2
писал фун-ю для конвертации INT в DateTime
По итогу столкнулся с "округлением" милисекунд при конвертации.
Например
select Cast ('1900-01-01 01:02:03.032' as DateTime) вернет 1900-01-01 01:02:03.033
select Cast ('1900-01-01 01:23:45.689' as DateTime) вернет 1900-01-01 01:23:45.690
Любопытно почему это происходит?
Ну и если сталкивались, то может подскажете решение, как сконвертировать точно-преточно?
27 авг 14, 17:44    [16502784]     Ответить | Цитировать Сообщить модератору
 Re: Округление? при конвертации строки в Дату  [new]
o-o
Guest


К сообщению приложен файл. Размер - 10Kb
27 авг 14, 17:48    [16502798]     Ответить | Цитировать Сообщить модератору
 Re: Округление? при конвертации строки в Дату  [new]
o-o
Guest
loki3d
может подскажете решение, как сконвертировать точно-преточно?

подскажем, конечно.
использовать точный-преточный тип datetime2, если верия сервера позволяет.
Date range
0001-01-01 through 9999-12-31
Accuracy
100 nanoseconds
27 авг 14, 17:51    [16502819]     Ответить | Цитировать Сообщить модератору
 Re: Округление? при конвертации строки в Дату  [new]
Crimean
Member

Откуда:
Сообщений: 13147
DateTime2?
27 авг 14, 17:52    [16502824]     Ответить | Цитировать Сообщить модератору
 Re: Округление? при конвертации строки в Дату  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8933
loki3d
писал фун-ю для конвертации INT в DateTime
По итогу столкнулся с "округлением" милисекунд при конвертации.
Например
select Cast ('1900-01-01 01:02:03.032' as DateTime) вернет 1900-01-01 01:02:03.033
select Cast ('1900-01-01 01:23:45.689' as DateTime) вернет 1900-01-01 01:23:45.690
Любопытно почему это происходит?
Ну и если сталкивались, то может подскажете решение, как сконвертировать точно-преточно?


У datetime точность - до 3 миллисекунд.
"Точно-преточно" можно либо сконвертировать в новый тип datetime2, либо (если версия не позволяет) делать "закат солнца вручную" на основе строкового представления.
27 авг 14, 17:52    [16502828]     Ответить | Цитировать Сообщить модератору
 Re: Округление? при конвертации строки в Дату  [new]
loki3d
Member

Откуда:
Сообщений: 2
Спасибо!
27 авг 14, 17:54    [16502844]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить