10
votes

Convertir de DateTime à int

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


1 commentaires

Sélectionnez Cast (Cast ('20090101' comme DateTime) que INT) + 2?


3 Réponses :


18
votes

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


4 commentaires

L'OP n'a pas de composant de temps (affiché au moins). DateTime 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)


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?



10
votes

Sélectionnez DaturaIff (DD, '12 / 30/1899 ', MyDatefield)


4 commentaires

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 :)



0
votes

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: xxx

mais vous devez tester à Doublecheck. < / p>


0 commentaires