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

发布于 2024-12-02 11:40:35 字数 247 浏览 1 评论 0原文

我有一个日期时间列,需要将其更改为 varchar 列。

使用下面的语句,生成的字符串具有以下格式:“Jan 18 2010 5:28PM”

ALTER TABLE Thinger
ALTER COLUMN LastUpdateDate varchar(16) NOT NULL

我希望生成的字符串具有 yyyyMMdd 格式(给出 20100118)。有办法做到这一点吗?

谢谢

I have a datetime column that I need to alter to be a varchar column.

Using the statement below, the strings produced have this format: "Jan 18 2010 5:28PM"

ALTER TABLE Thinger
ALTER COLUMN LastUpdateDate varchar(16) NOT NULL

I would like strings produced to have a yyyyMMdd format (giving 20100118) instead. Is there a way to do this?

Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

后eg是否自 2024-12-09 11:40:35

坏主意...永远不要将日期存储在 varchar 列中,现在你会在其中以不同的格式得到垃圾
当您想要 yyyyMMdd 时,为什么还要使用 varchar(16) 呢?

如果您希望输出采用不同的格式,请在表示层中进行操作,或者

SELECT CONVERT(CHAR(8),GETDATE(),112)

立即使用转换如果您确实想做您所说的事情,请

运行您的脚本,然后再执行

UPDATE Table 
SET LastUpdateDate  =  CONVERT(CHAR(8),(CONVERT(DATETIME,CONVERT(varchar,LastUpdateDate))),112)

一次。.bad bad bad 想法

另外,SQL Server 的下一个版本将使格式化变得更加容易,请参阅:格式化函数SQL Server Denali CTP3

Bad, Bad idea...never ever store dates in varchar columns, now you will get garbage in there in different formats
Also why varchar(16) when you want yyyyMMdd?

if you want the output to be in a different format do it in the presentation layer or use convert

SELECT CONVERT(CHAR(8),GETDATE(),112)

now if you really want to do what you say you want to do

run your script and then do

UPDATE Table 
SET LastUpdateDate  =  CONVERT(CHAR(8),(CONVERT(DATETIME,CONVERT(varchar,LastUpdateDate))),112)

But again..bad bad bad idea

Also the next version of SQL Server will make formatting a lot easier see: Format function in SQL Server Denali CTP3

一杆小烟枪 2024-12-09 11:40:35

试试这个脚本:

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

Try this script:

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文