[英]SQL Server - Convert VarChar to Date in ALTER TABLE
看到一些線程,但我有一個特定的實例,我試圖在ALTER TABLE語句中進行轉換。
ALTER TABLE Leads
ALTER COLUMN [Created Date] Date
這是一個錯誤:
Msg 241,Level 16,State 1,Line 34
從字符串轉換日期和/或時間時轉換失敗。
該語句已終止。
創建日期當前設置為(varchar(max),null)
您可以標准化日期格式。 像這樣的東西:
UPDATE Leads
SET [Created Date] = TRY_CONVERT(Date, [Created Date], 101);
第三個參數是注釋中提到的MM / DD / YYYY格式。 這會將值轉換為日期(如果可以),否則轉換為NULL
。 然后,SQL Server將使用其默認格式轉換回字符串。
注意:如果這樣做,請確保備份表,以免丟失列中的信息!
然后,您的代碼應該工作:
ALTER TABLE Leads ALTER COLUMN [Created Date] Date;
您可以使用以下方法找到惡意值:
select [Created Date]
from Leads
where try_convert(date, [Created Date], 101) is null and
[Created Date] is not null;
按照Jarlh的說法:
ALTER TABLE Leads
ADD COLUMN CreatedDate Date;
UPDATE Leads
SET CreatedDate = cast(right([Created Date],4) + '-' + left([Created Date],2) + '-' + left(right([Created Date],7),2) as Date);
Alter TABLE Leads
DROP COLUMN [Created Date];
sp_rename 'Leads.CreatedDate', '[Created Date]', 'COLUMN';
我認為你必須創建臨時表,然后將所有記錄插入臨時表,然后重命名臨時表和原始表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.