我有一个 datetime 列,我需要将其更改为 varchar 列。
使用下面的语句,生成的字符串具有以下格式:“Jan 18 2010 5:28PM”
ALTER TABLE Thinger
ALTER COLUMN LastUpdateDate varchar(16) NOT NULL
我希望生成的字符串具有 yyyyMMdd 格式(给出 20100118)。有没有办法做到这一点?
谢谢
我有一个 datetime 列,我需要将其更改为 varchar 列。
使用下面的语句,生成的字符串具有以下格式:“Jan 18 2010 5:28PM”
ALTER TABLE Thinger
ALTER COLUMN LastUpdateDate varchar(16) NOT NULL
我希望生成的字符串具有 yyyyMMdd 格式(给出 20100118)。有没有办法做到这一点?
谢谢
糟糕,糟糕的主意......永远不要在 varchar 列中存储日期,现在你会以不同的格式在其中得到垃圾 还有为什么 varchar(16) 当你想要 yyyyMMdd 时?
如果您希望输出采用不同的格式,请在表示层中执行或使用转换
SELECT CONVERT(CHAR(8),GETDATE(),112)
现在如果你真的想做你说你想做的事
运行你的脚本,然后做
UPDATE Table
SET LastUpdateDate = CONVERT(CHAR(8),(CONVERT(DATETIME,CONVERT(varchar,LastUpdateDate))),112)
但是又一次..坏坏坏主意
此外,下一版本的 SQL Server 将使格式化更容易,请参阅:SQL Server Denali CTP3 中的格式化功能
试试这个脚本:
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