2017-05-31 3 views
1

Dans Excel, lorsque je convertis ces nombres 'Général' en dates, ce qui est ce qu'ils sont réellement, je reçois des nombres différents que lorsque je les ai dans SQL Server. Les données proviennent d'une importation.Mauvaise conversion en datetime dans SQL Server

General  Excel conversion to date  SQL Server conversion to datetime 
37621  31-12-2002      2003-01-02 00:00:00.000 
39082  31-12-2006      2007-01-02 00:00:00.000 
39447  31-12-2007      2008-01-02 00:00:00.000 
etc. 

Comment puis-je obtenir les dates réelles comme dans Excel avec une requête dans SQL Server? Comme mentionné, j'ai déjà utilisé CONVERT(datetime, [General]), mais ensuite j'obtiens les résultats comme dans la colonne Conversion de SQL Server en datetime.

+0

Quel est le code 'converti()' vous utilisez dans SQL Server? D'où viennent aussi les données? Une table? Une importation? – ollie

+0

Excel/Windows et SQL Server ont des Day-Zero différents. Au large de deux jours. IIRC, c'était une erreur originale dans Windows V1 (je suppose que c'était en fait deux erreurs différentes combinées). – RBarryYoung

Répondre

2

Pour convertir une valeur Excel à une date

Select DateAdd(DAY,General,'1899-12-30') 
From YourTable 

Démonstration

Declare @YourTable Table ([General] int,[Excel conversion to date] varchar(50)) 
Insert Into @YourTable Values 
(37621,'31-12-2002') 
,(39082,'31-12-2006') 
,(39447,'31-12-2007') 

Select * 
     ,DateAdd(DAY,[General],'1899-12-30') 
from @YourTable 

Retours

General Excel conversion to date (No column name) 
37621 31-12-2002     2002-12-31 00:00:00.000 
39082 31-12-2006     2006-12-31 00:00:00.000 
39447 31-12-2007     2007-12-31 00:00:00.000 
+0

John, j'apprécie votre réponse. Mais cela ne semble pas fonctionner pour moi quand j'utilise l'instruction SELECT ci-dessus .. J'ai seulement besoin de remplacer 'General' avec mon vrai nom de colonne? – PRIME

+0

@PRIME Correct. Il était de démontrer comment convertir une valeur de date Excel dans une date SQL Server via le DateAdd() –

+0

@JohnCappelletti pourquoi 1899-12-30? –