我有一個日期時間列,我需要改變成一個varchar列。如何更改使用ALTER COLUMN將日期時間列轉換爲varchar時生成的日期格式?
用下面的語句,產生的字符串具有以下格式:「2010年1月18日17:28」
ALTER TABLE Thinger
ALTER COLUMN LastUpdateDate varchar(16) NOT NULL
我想製作有一個YYYYMMDD格式(給20100118),而不是字符串。有沒有辦法做到這一點?
感謝
我有一個日期時間列,我需要改變成一個varchar列。如何更改使用ALTER COLUMN將日期時間列轉換爲varchar時生成的日期格式?
用下面的語句,產生的字符串具有以下格式:「2010年1月18日17:28」
ALTER TABLE Thinger
ALTER COLUMN LastUpdateDate varchar(16) NOT NULL
我想製作有一個YYYYMMDD格式(給20100118),而不是字符串。有沒有辦法做到這一點?
感謝
壞,壞主意 ...永遠不會存儲在VARCHAR列的日期,現在你會得到垃圾在那裏以不同的格式 也因如此VARCHAR(16)當你想年月日?
,如果你想輸出爲不同的格式做在表示層或使用轉換
SELECT CONVERT(CHAR(8),GETDATE(),112)
現在,如果你真的想這樣做,你說什麼,你想要做
運行你的腳本,然後做
UPDATE Table
SET LastUpdateDate = CONVERT(CHAR(8),(CONVERT(DATETIME,CONVERT(varchar,LastUpdateDate))),112)
但再次.. 很壞很壞的壞主意
同樣的SQL Server的下一個版本將格式化輕鬆不少見:Format function in SQL Server Denali CTP3
我同意這是一個壞主意,但我正在使用的文件中的日期以這種方式來到我身上。最初,我選擇將日期存儲爲日期時間,但我們收到的日期字符串往往是無效的日期。他們會有像2月30日這樣的日子和其他的廢話。或者他們會缺少(或額外)字符。這就是爲什麼我使用varchar(16) - 即使廢話日期錯誤,我仍然需要存儲我得到的內容,直到它們得到糾正。此外,日期有時被寫入19750400表明只有年和月是已知的,並且日期時間不能這樣做 –
謝謝,這完成了這項工作。 –
然後你需要去打敗誰給你無效的日期。最好用一個大而重的物體。與此同時,我會有一個'翻譯'或'暫存'表格/列,在那裏你存儲無效日期,直到他們可以工作 - 實際上不會將無效日期存儲在主表/鍵中。並找出缺失時間的日期的業務規則 - 使用午夜或其他合理的時間。不要只是使用無效的日期,否則它會變得慣性...... –
試試這個腳本:
ALTER TABLE Thinger ADD LastUpdateDateText VARCHAR(16) NOT NULL
GO
UPDATE Thinger SET LastUpdateDateText = CONVERT(VARCHAR(8), LastUpdateDate, 112)
GO
ALTER TABLE Thinger DROP COLUMN LastUpdateDate
GO
sp_RENAME 'Thinger.LastUpdateDateText' , 'LastUpdateDate', 'COLUMN'
GO
你爲什麼要改變表這種方式?他們真的不是約會嗎? –
你如何填充這張表 - 使用存儲過程?然後將該值作爲日期時間並在過程中進行轉換。 – lcv77
日期是從一組文件中導入的。這些文件以這種方式列出日期,以便它們可以只存儲年份和月份,並通過將這些數字設置爲零來使日期不確定(20110800)。我想這意味着他們不是_always_日期,這是造成問題。 –