2009-11-05 4 views
0

Мы используем TypedDataSet в нашем приложении. Данные передаются процедуре в форме XML для вставки/обновления.Настройка часового пояса - преобразование XML DateTime в SQL DateTime

Теперь после заполнения DE данными datetime остается тем же, что и информация о часовом поясе, как показано ниже.

Дата в БД: 2009-10-29 18: 52: 53,43 Дата в формате XML: 2009-10-29T18: 52: 53.43-05: 00

Теперь, когда я пытаюсь преобразовать XML ниже в SQL DateTime корректирует 5 часов, и я получаю

2009-10-29 23: 52: 53.430 как окончательный результат, что неправильно. Необходимо найти способ извлечь datetime из ниже фрагмента XML, игнорируя часовой пояс.

У меня есть XML в следующем формате, с разницей часовых поясов -05,00

<Order> 
    <EnteredDateTime>2009-10-29T18:52:53.43-05:00</EnteredDateTime> 
</Order> 

ответ

0

2009-10-29 18: 52: 53,43 не то же самое время, как 2009-10-29T18: 52: 53.43-05 : 00. Это первый шаг, который неверен. Правильно преобразование из XML в SQL DateTime.

ISO 8601

+0

Ok. Я это понимаю. Но тогда какое решение? Мне нужно внести изменения в мой оператор select? Почему «2009-10-29 18: 52: 53.43» преобразуется в «2009-10-29T18: 52: 53.43-05: 00»? –

+0

Я никогда не видел, чтобы SQL Server выводил дату в этом формате. Где происходит DB-> XML-строка? Вот в чем проблема. У вас есть контроль над этим кодом? – Bryan

+0

Я этого не делаю. Мы используем Enterprise Library для заполнения этого набора данных. –

0

Сначала конвертировать в типизированное время даты XSD, а затем использовать метод значения для преобразования этого значения в SQL DateTime.

select convert(xml, '<DateTimeWithTimeZone>2012-09-15T16:08:14.787-05:00</DateTimeWithTimeZone>').value('xs:dateTime(/DateTimeWithTimeZone[1])', 'datetime') 

Convert datetime with time zone to SQL datetime

Смежные вопросы