2011-04-28 187 views
5

我在SQL Server數據庫中具有以下列date列。T-SQL:將varchar日期列轉換爲日期類型

的數據類型是目前varchar和日期將被存儲在以下格式:2010-04-24

我運行下面的命令:

ALTER TABLE games ALTER COLUMN date date 

,但我得到了以下錯誤:

ERROR: Conversion failed when converting date and/or time from character string.

我在做什麼錯?

回答

7

可能有幾個日期不起作用。您正在使用哪個版本的版本? 2008我想,如果你有一個DATE數據類型 - 對吧?

我的建議是:

1)創建類型DATE

ALTER TABLE dbo.Games 
    ADD NewDate DATE 

2的新列)運行在你的表的更新腳本,看看哪些項目將無法轉換成DATE

UPDATE dbo.Games 
SET NewDate = CAST([date] AS DATE) 
WHERE ISDATE([date]) = 1 

檢查ISDATE() = 1應過濾掉那些無法轉換爲的條目0數據類型。

一旦所有的條目已經成功轉換,你總是可以刪除舊[date]列,並重新命名新列回[date] - 但使用保留的字像DATE的列名是不是真的很聰明 - 我嘗試使用更多的話語,更有表現力的東西(與你所處的問題領域有關)。

+0

聽起來不錯,但現在當我嘗試運行更新行時出現以下錯誤:錯誤:executeQuery方法必須返回結果集。 – kylex 2011-04-28 16:03:19

+0

我直接使用RazorSQL運行腳本。 – kylex 2011-04-28 16:06:10

+0

@kylex:好的 - 那麼你的工具必須有一個有趣的需求....這個聲明應該在SQL Server Mgmt Studio中工作得很好...... – 2011-04-28 16:06:42

相關問題