При взятии даты из хмл, значение уменьшается на 1 день :(

Диам
Дата: 06.05.2015 18:01:59
Получаю отчет от НБКИ в xml формате
В нем есть такой тег с датой
<issueDate>2002-09-18+03:00</issueDate>

При переводе содержимого тега в sql переменную с типом datetime получаю 17.09.2002

DECLARE @x xml ;
SET @x='<IdReq>
        <idNum>34343</idNum>
        <idType>21</idType>
        <idTypeText>Паспорт гражданина РФ</idTypeText>
        <seriesNumber>1402</seriesNumber>
        <issueCountry>Россия</issueCountry>
        <issueDate>2002-09-18+03:00</issueDate>
        <issueAuthority>71 ОТДЕЛОМ МИЛИЦИИ ПЕТРОГРАДСКОГО РАЙОНА ГОРОДА Санкт-Петербурга</issueAuthority>
      </IdReq>';
      
SELECT T.c.value('issueDate[1]', 'datetime') AS result
FROM   @x.nodes('IdReq') T(c);
Диам
Дата: 06.05.2015 18:02:29
Почему? И как победить?
invm
Дата: 06.05.2015 18:28:25
SELECT cast(T.c.value('issueDate[1]', 'datetimeoffset') as datetime) AS result
FROM   @x.nodes('IdReq') T(c);
a_voronin
Дата: 06.05.2015 18:31:13
Диам
Почему?



Потому что выставлена Time Zone.


Диам
И как победить?


Вот так

DECLARE @x xml ;
SET @x='<IdReq>
        <idNum>34343</idNum>
        <idType>21</idType>
        <idTypeText>Паспорт гражданина РФ</idTypeText>
        <seriesNumber>1402</seriesNumber>
        <issueCountry>Россия</issueCountry>
        <issueDate>2002-09-18+03:00</issueDate>
        <issueAuthority>71 ОТДЕЛОМ МИЛИЦИИ ПЕТРОГРАДСКОГО РАЙОНА ГОРОДА Санкт-Петербурга</issueAuthority>
      </IdReq>';
      
SELECT RIGHT(T.c.value('issueDate[1]', 'varchar(100)'), 6), switchoffset (T.c.value('issueDate[1]', 'datetime2'), RIGHT(T.c.value('issueDate[1]', 'varchar(100)'), 6)) AS result
FROM   @x.nodes('IdReq') T(c);
a_voronin
Дата: 06.05.2015 18:32:40
invm
SELECT cast(T.c.value('issueDate[1]', 'datetimeoffset') as datetime) AS result
FROM   @x.nodes('IdReq') T(c);


так проще
Диам
Дата: 07.05.2015 05:41:03
Спасибо. Работает :)