Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Denis.Dacko Member Откуда: Сообщений: 12 |
Коллеги, столкнулся с проблемной ситуацией. Необходимо получить datetime при наличии следующих полей: mydate - smalldatetime mytime - varchar(5) Проблема состоит в том, что в mytime записывается время в произвольном формате и столбец может иметь значения: {'00.00', '00,00', '00.-1', '08/','' } Следующий запрос выполняет преобразование и сложение, учитывая эти ситуации: select CONVERT(datetime, cast(cast(mydate as int) as datetime) + ' ' + cast(replace(replace(replace(mytime, '-', ':'),'.',':'), ',', ':') + ':00' as datetime)) from vlad.dbo.basaunion where mytime not in ( '00.-1') and len(mytime) = 5 Можно ли его преобразовать в нечто более быстрое, избежав череды cast'ов? |
6 сен 12, 14:50 [13124265] Ответить | Цитировать Сообщить модератору |
Гавриленко Сергей Алексеевич Member Откуда: Moscow Сообщений: 37155 |
|
||
6 сен 12, 15:15 [13124457] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47052 |
CAST(CONVERT(CHAR(11),mydate,126)+[приведённый к правильному виду mytime] AS DATETIME) |
||
6 сен 12, 15:36 [13124642] Ответить | Цитировать Сообщить модератору |
Denis.Dacko Member Откуда: Сообщений: 12 |
iap, Спасибо |
6 сен 12, 16:11 [13124961] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |