2013-05-25 33 views
0

我有轉換字符串到目前爲止的問題。事情是,我創建了表格,並且獲得了大量記錄的數據庫,並且我應該將其加載到我的表格中。我搜索了任何解決方案,但我只用SELECT或CONVERT找到了單數記錄。到目前爲止SQL Server轉換字符串

這是錯誤消息:從字符串變換日期和/或時間時

轉換失敗。

我應該如何解決它的許多記錄(SQL Server)?

感謝您的幫助。

+0

你是否試圖從一個表加載數據到另一個,將varchar轉換爲datetime?你能提供樣品數據嗎? – sgeddes

+0

不,我去那樣的smt文件(這是一個例子): INSERT INTO database_name.dbo.table_name VALUES('Smith','John','1965-10-21','1999-06-11 '), ...(重複).. – Maggie

+0

有大約2.000條記錄,所以我需要一個解決方案,我可以一次使用所有這些 – Maggie

回答

0

好吧,我列的順序錯誤,所以它採取的名稱日期,並儘量爲varchar轉換爲日期。我很感激你的幫助:)

0

如果我理解你的問題,你有一個或一些插入語句的問題。假設你可以改變INSERT語句,那麼你可以使用ISDATE由先前的評論者的建議:

INSERT INTO table_name 
VALUES('Lisiak','Anna', 
    CASE WHEN ISDATE('1968-05')=1 THEN '1968-05' ELSE '1/1/1753' END, 
    CASE WHEN ISDATE('1998-01-01')=1 THEN '1998-01-01' ELSE '1/1/1753' END); 

SQL Fiddle Demo

既然你撥弄例如有日期字段不爲空,我用1 /無效日期1/1753 - 相應更改。

如果因爲某種原因無法更改INSERT語句,則另一個選擇是將您的表更改爲接受varchar而不是datetime。然後轉換並相應地改回。

UPDATE table_name 
SET data_ur = CASE WHEN ISDATE(data_ur)=1 THEN data_Ur ELSE '1/1/1753' END; 

ALTER TABLE table_name ALTER COLUMN data_ur DATE NOT NULL; 

Another Fiddle

+0

是的,但如果我有大約2000行,這是很難添加到他們每個人。當你沒有太多的記錄插入時很好。 – Maggie

相關問題