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

Откуда:
Сообщений: 44
Добрый день.

Подскажите пожалуста как перевести строку заданого формата ддммгг в дату?

Например 050918


в готовых форматах CONVERT такого не нашел, только с /
11 сен 18, 11:55    [21670741]     Ответить | Цитировать Сообщить модератору
 Re: Перевести 050918 в дату  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5653
Три substring'а по 2 цифры сконкатенировать точкой, и применить 4-й стиль - не?
11 сен 18, 12:05    [21670761]     Ответить | Цитировать Сообщить модератору
 Re: Перевести 050918 в дату  [new]
qqq_2
Member

Откуда:
Сообщений: 44
Сон Веры Павловны
Три substring'а по 2 цифры сконкатенировать точкой, и применить 4-й стиль - не?


Спасибо, сейчас попробую.
11 сен 18, 12:08    [21670765]     Ответить | Цитировать Сообщить модератору
 Re: Перевести 050918 в дату  [new]
qqq_2
Member

Откуда:
Сообщений: 44
Вообще плохо что у скл сервер нельзя произвольный формат задавать, как в некоторых других СУБД.
11 сен 18, 12:09    [21670767]     Ответить | Цитировать Сообщить модератору
 Re: Перевести 050918 в дату  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
qqq_2,

Надо быть полным оригиналом, чтобы вместо использования соответствующего типа передавать данные строкой либо хранить данные в несоответствующем типе.
11 сен 18, 12:57    [21670839]     Ответить | Цитировать Сообщить модератору
 Re: Перевести 050918 в дату  [new]
iap
Member

Откуда: Москва
Сообщений: 46954
qqq_2
Вообще плохо что у скл сервер нельзя произвольный формат задавать, как в некоторых других СУБД.
В последних версиях есть же Format()?

SELECT CONVERT(DATE,STUFF(STUFF('050918',5,0,'.'),3,0,'.'),4);
11 сен 18, 13:30    [21670886]     Ответить | Цитировать Сообщить модератору
 Re: Перевести 050918 в дату  [new]
nullin
Member

Откуда: pullin
Сообщений: 141
Ken@t, не поспоришь, но может автор получил данные в таком формате как предрассчитанные, например. Можно еще посмотреть функцию DATETIMEFROMPARTS, но только придется еще проверять непротиворечивость входных данных, кстати по этой же причине вместо CONVERT, использовать TRY_CONVERT . Все-таки в таком формате как у автора, возникает резонное сомнение, что там вместо даты может быть туфта.
11 сен 18, 14:04    [21670947]     Ответить | Цитировать Сообщить модератору
 Re: Перевести 050918 в дату  [new]
Сон Веры Павловны
Member

Откуда:
Сообщений: 5653
iap
В последних версиях есть же Format()?

Он 1) недетерминированный, 2) возвращает nvarchar; 3) на вход принимает только числовые типы, и типы даты-времени. Т.е. это только для получения отфрматированной строки.
ну, и плюс вот эта ремарка:
FORMAT relies on the presence of the .NET Framework Common Language Runtime (CLR).
11 сен 18, 15:26    [21671092]     Ответить | Цитировать Сообщить модератору
 Re: Перевести 050918 в дату  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
дебаты прям... а как с годом вопрос решаете?
11 сен 18, 15:57    [21671135]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить