0

日付の列を含むテーブルに約 200 万行あります...この列の型は でVARCHAR、間違った日付形式が含まれています。この形式dd/mm/YYYYがあり、YYYY-mm-dd...

どうすれば変更できますか?Varcharこれは列ではなく列であることを忘れないでくださいDatetime(クエリで操作するため、日時フィールドにすることはできません)。

アドバイスありがとうございます。

アップデート

私が言ったように、私は何百万もの行を持っているので、あなたが回答で言ったように、日付フィールドを1つずつ新しいフィールドに照会することはできません....すべての行を転送するには、ある種の「自動」モードが必要です新しい形式とデータ型の列に。

4

2 に答える 2

3

最終目標が日時列に終わるクリーンアップだけである場合は、新しい列を追加してからデータを転送するだけで済みます。

update tbl
   set new_datetime_col = convert(datetime, dateinvarchar, 103);

クエリ

update tbl
   set dateinvarchar = convert(char(10),
                       convert(datetime,
                               dateinvarchar, 103), 121)
select * from tbl

サンプルテーブル

create table tbl (dateinvarchar varchar(10));
insert tbl values
  ('01/02/2012'),
  ('02/02/2012'),
  ('03/02/2012'),
  ('14/12/2012');

サンプル結果

| DATEINVARCHAR |
-----------------
|    2012-02-01 |
|    2012-02-02 |
|    2012-02-03 |
|    2012-12-14 |
于 2012-12-13T07:41:43.010 に答える
3

これを試して

Declare @t table (dt varchar(25));
insert into @t
SELECT '01/01/2012' UNION 
SELECT '02/01/2012' UNION
SELECT '03/01/2012'

SELECT convert(varchar(10), CONVERT(datetime, dt, 103), 120) as dt_new
from @t;


CREATE TABLE newT(id, dt varchar(10));
INSERT INTO newT
SELECT id, convert(varchar(10), CONVERT(datetime, dt, 103), 120) as dt_new
    from oldT;
于 2012-12-13T07:36:19.170 に答える