varchar列に変更する必要がある日時列があります。
以下のステートメントを使用すると、生成される文字列の形式は「2010年1月18日午後5時28分」になります。
ALTER TABLE Thinger
ALTER COLUMN LastUpdateDate varchar(16) NOT NULL
代わりに、生成された文字列をyyyyMMdd形式(20100118を指定)にしたいと思います。これを行う方法はありますか?
ありがとう
varchar列に変更する必要がある日時列があります。
以下のステートメントを使用すると、生成される文字列の形式は「2010年1月18日午後5時28分」になります。
ALTER TABLE Thinger
ALTER COLUMN LastUpdateDate varchar(16) NOT NULL
代わりに、生成された文字列をyyyyMMdd形式(20100118を指定)にしたいと思います。これを行う方法はありますか?
ありがとう
悪い、悪い考え... 日付を 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 関数
このスクリプトを試してください:
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