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

Откуда: this
Сообщений: 184
На вход в процедуру подается xml, который обрабатывается через openxml, одно из полей содержит дату, но записана она может быть как в виде yyyy-mm-dd, так и в виде dd-mm-yyyy, возможно в дальнейшем могут появится и другие варианты ее записи, какой есть вариант, при любом формате, правильно сконвертировать ее в тип SmallDateTime, который впоследствии вставляется в таблицу.

Сейчас сделано так:

Set @resTransferDate = LTrim(RTrim(@resTransferDate))
Set @resTransferDate = Right(@resTransferDate, 4) + SubString(@resTransferDate, 4, 2) + Left(@resTransferDate, 2)
Set @pTransferDate = Convert(SmallDateTime, @resTransferDate)


но это только для одного варианта dd-mm-yyyy, для двух соответственно нужно будет определить какого формата дата и сделать разбор каждого отдельно, возможно есть уже готовый функционал на эту тему.

Смущает, то, что дата может быть в каком нить другом формате записана ...
3 фев 12, 10:21    [12024143]     Ответить | Цитировать Сообщить модератору
 Re: Определить формат даты в строке и сконвертировать ее  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
novexelf,

если дата представлена строкой, а формат строкового представления не задан,
то в общем случае ничего сделать нельзя.
Разве что распознаете формат без разделителей. Хотя и это ничего не гарантирует.
3 фев 12, 10:29    [12024205]     Ответить | Цитировать Сообщить модератору
 Re: Определить формат даты в строке и сконвертировать ее  [new]
novexelf
Member

Откуда: this
Сообщений: 184
iap,

Ладно, спасибо, тогда тупо сделаю проверку формата для dd-mm-yyyy и yyyy-mm-dd, и последующую конвертацию, а все остальные форматы пусть идут лесом, не фиг слать файлы отличные от формата по договору ...
3 фев 12, 11:18    [12024591]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить