varchar日付フィールドをdatetimeデータ型に変換する[重複]
Dec 16 2020
varcharを使用して日付/時刻を表すデータを保存するのを間違えました。今、私は次のように、varcharとして保存されているテキストデータの列を変換しようとしています。
2020-11-25T14:22:41.3539327Z
日時データ型を格納する列に。
回答
1 Larnu Dec 16 2020 at 02:49
すべてのデータがフォーマットであるyyyy-MM-ddThh:mm:ss.nnnnnnn
場合、列のデータ型を変更するだけです。
ALTER TABLE dbo.YourTABLE ALTER COLUMN YourColumn datetime2(7);
そこにタイムゾーンが必要な場合は、datetimeoffset(7)
代わりに使用してください。
Brad Dec 16 2020 at 02:33
-- to fix it you can use convert, below uses GetDate for examaple
SELECT convert(varchar, getdate(), 120)
必要な精度に応じて、以下のリンクを使用してそれを見つけ、120をその精度に必要な数に変更できます。
https://www.mssqltips.com/sqlservertip/1145/date-and-time-conversions-using-sql-server/
テーブルを修正するには、次の手順に従う必要があります。
- DateTimeのテーブルに新しい列を追加します
- 上記のConvertを使用してテーブルの更新を実行し、varcharフィールドから変換された値で新しい列を更新します。
- 次に、varcharデータを含む列を削除します。
上で概説した手順を実行するためのコード
ALTER TABLE dbo.TableName ADD NewDateTimeCOL DATETIME
-- NOTE if your table is LARGE you will not want to do a direct update like this but do looping for performace purposes
UPDATE dbo.TableName
SET NewDateTimeCOL = convert(varchar, OldDateTimeCOL, 120)
ALTER TABLE dbo.TableName DROP COLUMN OldDateTimeCOL