簡體   English   中英

SQL Server - 在ALTER TABLE中將VarChar轉換為Date

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM