Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
AvnAvnAvn Member Откуда: Сообщений: 111 |
Как в Transact SQL преобразовать строку в дату? |
16 фев 06, 12:48 [2362530] Ответить | Цитировать Сообщить модератору |
Latuk Member Откуда: N 54°38', E 037°35' Сообщений: 7313 |
CAST CONVERT FAQ |
16 фев 06, 12:50 [2362539] Ответить | Цитировать Сообщить модератору |
vooo Member Откуда: Сообщений: 1316 |
FAQ |
16 фев 06, 12:50 [2362544] Ответить | Цитировать Сообщить модератору |
Между сообщениями интервал более 1 года. |
LZeal
Guest |
Как преобразовать строку в дату если формат в строке 104й (дд.мм.гггг) и защитися чтоб в строке случайно не бьіло кракозябр? IsDate не понимает формат дд.мм.гггг |
14 сен 12, 22:13 [13167789] Ответить | Цитировать Сообщить модератору |
invm Member Откуда: Москва Сообщений: 9633 |
|
||
14 сен 12, 22:52 [13167934] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31780 |
Или использовать IsDate, предварительно установив SET DATEFORMAT |
||||
14 сен 12, 22:53 [13167938] Ответить | Цитировать Сообщить модератору |
Читатель неместный
Guest |
select dateadd(day,dbo.val(left(dat,2) dbo.val(dateadd(month, dbo.val(substring(dat,4,2)), dateadd(year, dbo.val(substring(dat,7,4)-1900 , '19000101'))) гарантированно !! только неработает без функции val ...в фоксе была такая |
14 сен 12, 23:40 [13168098] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31780 |
|
||
15 сен 12, 00:06 [13168182] Ответить | Цитировать Сообщить модератору |
LZeal
Guest |
Єто мьісль! Но только вот кракозябр оно не пропустит, а 19.19.9999 пропустит... Но если после лайка сабстрингами поменять местами день и месяц (под понятньій для функции формат) и прогнать через IsDate то тогда должно сработать Вот только как весь єтот мутантокод впихнуть в область WHERE из селекта ? ))) |
||
15 сен 12, 01:04 [13168281] Ответить | Цитировать Сообщить модератору |
Читатель неместный
Guest |
дата формируется сложением составляющих и val имеется ввиду уже должна идти с защитой от крякозяблов - как в фоксе, возвращать численную часть строки слева ...ну там конешно ещё не хватает каких то скобок и зпятых.. но это мелочи)) Настаиваю )) такой способ восстановления даты из загруженных данных другого комплекса - самый дешевый и понятный! |
||||
15 сен 12, 10:16 [13168503] Ответить | Цитировать Сообщить модератору |
step_ks Member Откуда: Сообщений: 936 |
Так поменяйте тогда уж сразу на 'yyyymmdd' и не надо лайков. |
||||
15 сен 12, 13:32 [13168817] Ответить | Цитировать Сообщить модератору |
LZeal
Guest |
step_ks, Спасибо, сработало |
15 сен 12, 14:16 [13168887] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31780 |
Сравните варианты: select dateadd(day,dbo.val(left(dat,2) dbo.val(dateadd(month, dbo.val(substring(dat,4,2)), dateadd(year, dbo.val(substring(dat,7,4)-1900 , '19000101'))) select convert(date, dat, 104)
|
||||||||||
15 сен 12, 19:13 [13169444] Ответить | Цитировать Сообщить модератору |
Читатель неместный
Guest |
Гдето отсюда вроде скачивал... |
||||
15 сен 12, 19:27 [13169473] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31780 |
То есть если у вас дата записана в виде '@&.09.2012', то что вернёт ваш запрос? |
||||
15 сен 12, 19:30 [13169480] Ответить | Цитировать Сообщить модератору |
Читатель неместный
Guest |
плохо конешно...ещё хуже что '2&.09.2012' вернет 2е сентября, лучше бы вернула 20е сентября. Но с другой стороны, это же явный мусор - данные с такими датами - для этого случая сайдет и так |
||
15 сен 12, 20:18 [13169589] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31780 |
|
||
15 сен 12, 21:25 [13169786] Ответить | Цитировать Сообщить модератору |
iap Member Откуда: Москва Сообщений: 47047 |
|
||||
15 сен 12, 21:56 [13169884] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |