0

我的表中有大约 200 万行,其中有一列日期...此列的类型为VARCHAR,并且它包含错误的日期格式,我们有这种格式dd/mm/YYYY,它必须是YYYY-mm-dd...

我怎样才能改变它?请记住,它是一Varchar列,而不是一Datetime列(它不能是日期时间字段,因为我们使用查询对其进行操作)

谢谢你的建议。

更新

正如我所说,我有数百万行,因此不可能将日期字段逐个查询到新字段,正如您在回复中所说的那样......我需要某种“自动”模式来传输每一行到它的新格式和数据类型列。

4

2 回答 2

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 回答
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 回答