我試過了我能找到的所有東西(CAST
,CONVERT
,在導入時轉換,檢查默認語言設置),但我找不到工作解決方案將我的VARCHAR
值轉換爲DATETIME
。我想將此字段的轉換插入一個新表,其中該列設置爲DATETIME
。轉換不適用於VARCHAR到DATETIME
當我運行:
SELECT CONVERT(VARCHAR, [first air date], 121)
FROM mytable
結果返回精細,無差錯。然而,當我運行:
INSERT INTO newtable
SELECT ID, column1, column2,
CONVERT(VARCHAR, [first air date], 121)
FROM mytable
我得到這個錯誤:
Msg 242, Level 16, State 3, Line 1
The conversion of a varchar data type to a datetime data type resulted in an out-of-range value. The statement has been terminated.
爲什麼我會得到的結果(如在第一個查詢),但它不會將它們插入到另一個表?
數據看起來像這樣:'2004-02-23 00:00:00.000'(我知道破折號並不是最佳實踐,但我沒有擺動空間,因爲這種格式已被其他同事確定) 。
我正在通過.csv
導入數據,並且此列在Excel中設置爲日期格式。
更正 我現在認識到它應該是CONVERT(DATETIME,[first air date],121)。但是,這並不能解決手頭的實際問題,它將從VARCHAR轉換爲DATETIME,而不會出現「超出範圍」錯誤。
謝謝戈登那個快速的回答!但是,當我運行這個建議的查詢時,它只返回NULL的行。應該不存在NULL值嗎?爲什麼當我運行SELECT語句時(只是將NULL顯示爲NULL)而不是當我試圖插入轉換的數據時它工作? – CShrad
這些值爲NULL,SQL值還是NULL,是一個字符串? –
實際爲NULL,不是字符串 – CShrad