Dans mon paquet SSIS, je dois convertir des valeurs de DateTime à une valeur entière correspondante. L'échantillon suivant a été fourni.
Des idées sur la manière dont je peux convertir ces choses? P>
DATETIME INT --------- ---- 1/1/2009 39814 2/1/2009 39845 3/1/2009 39873 4/1/2009 39904 5/1/2009 39934 6/1/2009 39965 7/1/2009 39995 8/1/2009 40026 9/1/2009 40057 10/1/2009 40087 11/1/2009 40118 12/1/2009 40148 1/1/2010 40179 2/1/2010 40210 3/1/2010 40238 4/1/2010 40269 5/1/2010 40299 6/1/2010 40330
3 Réponses :
EDIT: La coulée sur un flotteur / int ne fonctionne plus dans les versions récentes de SQL Server. Utilisez la page suivante:
select cast(my_integer_date as datetime) from mytable
L'OP n'a pas de composant de temps (affiché au moins). DateTime CODE> est stocké 2 INTS afin que vous puissiez également lancer comme binaire et lancer les 4 premiers octets à int.
Sélectionnez Cast (sous-chaîne (coulée (coulé ('20090101 15:00:00' comme DateTime) comme binaire (8)), 1,4) comme int) code>
Vrai - mais mieux sûr que désolé!
Ça ne marche pas ?! Pour le format de date, il lance une erreur "La conversion explicite de la date de type de données à float n'est pas autorisée." et pour DateTime, il jette "la conversion a échoué lors de la conversion de la date et / ou du temps de la chaîne de caractères".
Quelle version de SQL Server utilisez-vous @muflix?
Sélectionnez DaturaIff (DD, '12 / 30/1899 ', MyDatefield) P> blockQuote>
Pourquoi utilisons-nous le 12/30/1899 et non le 12/11/1899?
@Seanbrookines Cela fait longtemps, mais IIRC il a trait à un bogue de date dans les notes de Lotus à partir du début des années 80, où Excel a copié le comportement afin d'être compatible avec des notes et que tout le reste a depuis copié Excel.
Le fait que vous ayez répondu et que quelqu'un différent est déjà étonnant, mais dans les 35 minutes, il n'est pas nécessaire de m'excuser du tout! J'ai vérifié et cela crée une compatibilité avec Excel, de sorte que cela a du sens. Bizarre!
Je reçois des avis pour de nouveaux commentaires :)
ou, une fois qu'il est déjà en SSIS, vous pouvez créer une colonne dérivée (dans le cadre d'une tâche de flux de données) avec: mais vous devez tester à Doublecheck. < / p> p>
Sélectionnez Cast (Cast ('20090101' comme DateTime) que INT) + 2? Code>