Convertir flotteur de type datetime

J'ai un FLOAT champ pour une date qui ressemble à ceci:

+-----------+
| FloatDate |
+-----------+
| 1012013   | -- Jan 1
| 3262013   | -- Mar 26
| 11072013  | -- Nov 7
| 10012013  | -- Oct 1
+-----------+

et je veux insérer ces données à une autre table, et le type de données de ses dateField est DATETIME.

Donc, je suis en train de convertir FloatDate valeurs DATETIME mais je suis juste en gardant à défaut..

J'ai essayé

INSERT INTO NEWTABLE 
(DateTimeDate)
SELECT CONVERT(DATETIME, CAST(CAST(FloatDate AS INTEGER) AS CHAR), 112)
FROM OLDTABLE

mais cela me donne une erreur qui dit que

Conversion a échoué lors de la conversion de type datetime de chaîne de caractères

Il semble que cela fonctionne si le format de la date de FloatDate est AAAAMMJJ. Donc, si je fais ça, ça marche.

DECLARE @test FLOAT
SET @test = 2132013                                                                                                                            
SELECT @test,  CONVERT(DATETIME, CAST(RIGHT(CAST(@test AS INTEGER), 4) AS CHAR(4)) + 
CASE WHEN LEN(CAST(@test AS INTEGER)) = 7 THEN '0' + CAST(LEFT(CAST(@test AS INTEGER), 3) AS CHAR(3))
     WHEN LEN(CAST(@test AS INTEGER)) = 8 THEN CAST(LEFT(CAST(@test AS INTEGER), 4) AS CHAR(4)) END, 1)

Mais, je me demande si je fais ce trop compliqué et manquant de peu la solution la plus simple, ou est-ce la seule façon que je peux obtenir??

  • Est 3262013 Le 26 Mars 2013? Si oui, pouvez-vous nous montrer ce 9 Mars pourrait ressembler, et le 5 octobre, et le 11 janvier?
  • Pourquoi dans le monde, êtes-vous abuser des pauvres à virgule flottante de type de données pour effectuer de tels rites impies?
  • Mon point exactement...
  • c'est le téléchargement des données à partir d'un autre système, donc je n'ai aucun contrôle sur leur conception de base de données. Je voudrais qu'il a été stocké dans datetime:(
InformationsquelleAutor kabichan | 2013-03-28