2017-05-31 19 views
1

Excelでは、これらの '一般的な'数値を実際には日付に変換すると、SQL ServerでCONVERT()と異なる数値が表示されます。データはインポートから取得されます。SQLサーバーのdatetimeへの変換が間違っています

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. 

SQL ServerのクエリでExcelのように実際の日付を取得するにはどうすればよいですか?既に述べたように、私はすでにCONVERT(datetime, [General])を使用しましたが、SQL Serverのdatetime変換への変換の結果を得ています。

+0

をExcelの値を変換するにはSQL Serverで?また、データはどこから来ていますか?テーブル?輸入ですか? – ollie

+0

Excel/WindowsとSQL ServerのDay-Zeroはそれぞれ異なります。 2日でオフになります。 IIRCでは、これはWindows V1のオリジナルの間違いでした(私は実際には2つの異なるミスを組み合わせたものと思われます)。 – RBarryYoung

答えて

2

日に

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

デモンストレーション

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 

戻り値を使用している `変換()`コードは何

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

ジョン、あなたの答えに感謝します。しかし、私は上記のSELECT文を使用すると私にとってはうまくいかないようです。私は実際のカラム名に「General」を置き換える必要がありますか? – PRIME

+0

@PRIME修正。それはDateAdd() –

+0

@ JohnCappelletti 1899-12-30を介してExcel日付値をSQL Server日付に変換する方法を示すことでした。 –

関連する問題