如何更改使用ALTER COLUMN将日期时间列转换为varchar时生成的日期格式?



我有一个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

相关内容

  • 没有找到相关文章