1

varchar列に変更する必要がある日時列があります。

以下のステートメントを使用すると、生成される文字列の形式は「2010年1月18日午後5時28分」になります。

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

代わりに、生成された文字列をyyyyMMdd形式(20100118を指定)にしたいと思います。これを行う方法はありますか?

ありがとう

4

2 に答える 2

4

悪い、悪い考え... 日付を varchar 列に保存しないでください。さまざまな形式でゴミが入ってしまいます また、yyyyMMdd が必要な場合に varchar(16) を使用するのはなぜですか?

出力を別の形式にしたい場合は、プレゼンテーション層で行うか、変換を使用してください

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 の Format 関数

于 2011-08-31T18:31:16.013 に答える
2

このスクリプトを試してください:

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
于 2011-08-31T18:32:50.703 に答える