2009-11-05 5 views
0

Nous utilisons TypedDataSet dans notre application. Les données sont passées à la procédure sous forme de XML pour insertion/mise à jour.Ajustement du fuseau horaire - Conversion du langage XML DateTime en SQL DateTime

Maintenant, après avoir renseigné DE avec les données, le datetime reste le même, bien que les informations de fuseau horaire soient ajoutées comme ci-dessous.

date dans DB: 2009-10-29 18: 52: 53,43 Date de XML: 2009-10-29T18: 52: 53,43 à 05: 00

Maintenant, quand je suis en train de convertir ci-dessous XML SQL DateTime il ajuste 5 heures et je reçois

2009-10-29 23: 52: 53.430 comme la sortie finale, ce qui est faux. Besoin de trouver un moyen d'extraire datetime de l'extrait XML ci-dessous en ignorant le fuseau horaire.

J'ai XML au format suivant, avec une différence de fuseau horaire -05,00

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

Répondre

0

2009-10-29 18: 52: 53,43 n'est pas en même temps que 2009-10-29T18: 52: 53,43 au 05 : 00. C'est la première étape qui est incorrecte. La conversion de XML vers SQL DateTime est correcte.

ISO 8601

+0

Ok. Je comprends que. Mais alors quelle est la solution? Ai-je besoin de modifier ma déclaration de sélection? Pourquoi "2009-10-29 18: 52: 53.43" est converti en "2009-10-29T18: 52: 53.43-05: 00"? –

+0

Je n'ai jamais vu SQL Server sortir une date dans ce format. Où se passe la chaîne DB-> XML? C'est là que le problème est. Avez-vous le contrôle sur ce code? – Bryan

+0

Je ne sais pas. Nous utilisons Enterprise Library pour peupler cet ensemble de données. –

0

d'abord convertir en date heure xsd tapé et puis utilisez la méthode de la valeur pour convertir cette valeur à un datetime sql.

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

Questions connexes