Bonjour à tous
Dans un logiciel de préparation de base, je dois intégrer des données représentant des rendez-vous sur un agenda. Les données à intégrer sont dans un fichier texte format délimité (une variante du csv, en gros). Pour simplifier les traitements les données sont d'abords intégrées en l'état dans des tables temporaires via la commande BulkCopy de .net, ou, accessoirement en utilisant open bulk dans une requête.
Ma date est une date locale française usuelle, donc en heure d'hiver ou d'été suivant le jour. Dans le fichier elle est sous la forme JJ/MM/YYYY ou JJ/MM/YYYY hh:mm. Elle est intégrée en l'état dans la table temporaire, dans une colonne Datetime. Jusque là pas de problème.
Je dois mettre cette date dans la table du logiciel destination, colonne de type Datetime aussi, sauf que le logiciel attend une date UTC.
Je pensais que je devais utiliser GETDATEUTC pour faire la conversion, mais je me rend compte que, si mes rendez-vous sur des périodes hivernales sont corrects, ceux sur une période estivale se retrouvent décalés, +1h.
GETDATEUTC n'est visiblement pas la solution.
Comment faire cette conversion ?
EDIt : J'ai oublié de préciser : SQL2008 R2 PRO et éventuellement Express.
EDIT 2 : le décalage est logique, j'utilise la formule suivante pour calculer la date à enregistrer
DATEADD(second,DATEDIFF(second, GETDATE(), GETUTCDATE()),dbo._ImportCalendrier.[DateDebut]) ,
. Et donc le décalage se calcule effectivement par rapport au décalage actuel et non pas par rapport au décalage correspondant à la date à convertir. Je ne sais donc pas comment faire puisque toutes mes recherches me renvoie vers GetUTCDate.
Partager