我有一个datetime列,我需要更改为varchar列。
使用下面的语句,生成的字符串具有这种格式:"Jan 18 2010 5:28PM"
ALTER TABLE Thinger
ALTER COLUMN LastUpdateDate varchar(16) NOT NULL
我希望生成的字符串具有yyyyMMdd格式(给出20100118)。有办法做到这一点吗?
谢谢
坏,坏主意…永远不要将日期存储在varchar列中,否则你会得到不同格式的垃圾另外,为什么要使用varchar(16)而不是yyyyMMdd?
如果您想要以不同的格式输出,请在表示层中进行操作或使用convert
SELECT CONVERT(CHAR(8),GETDATE(),112)
现在如果你真的想做你想做的事情
运行脚本,然后执行
UPDATE Table
SET LastUpdateDate = CONVERT(CHAR(8),(CONVERT(DATETIME,CONVERT(varchar,LastUpdateDate))),112)
但是. .bad bad bad idea
下一个版本的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