我的一个数据库表里面,将日期存储为字符串格式。
由于数据都是从excel中导入的,所以数据的格式不一致。
比如,同一个日期,有的是“2009-03-01”,有的却是“2009-3-1”。
我该如何才能将“2009-3-1”调整成为“2009-03-01”?

解决方案 »

  1.   

    SELECT CONVERT(VARCHAR(10),COL,120)
      

  2.   

    UPDATE TB SET COL=CONVERT(VARCHAR(10),COL,120)
      

  3.   

    update tablename set 时间列=convert(varchar(10),时间列,120)
      

  4.   

    UPDATE TB SET TIME=CONVERT(VARCHAR(10),TIME,120)
      

  5.   


    UPDATE TB SET COL=CONVERT(VARCHAR(10),CONVERT(DATETIME,COL),120)
      

  6.   

    update tb set 
        fdate=convert(varchar,cast(fdate as datetime),23)
      

  7.   

    UPDATE TB SET TIME=CONVERT(VARCHAR(10),CONVERT(DATETIME,TIME),120)还不是时间格式呀,晕
      

  8.   

    应该是直接改数据库的字段类型为datetime就可了
      

  9.   

    本帖最后由 hery2002 于 2009-09-19 12:34:28 编辑
      

  10.   


    select convert(varchar(10),'2009-09-8',120)  ---1
    ----------
    2009-09-8select convert(varchar(10),cast('2009-09-8' as datetime),120)     --2
    ----------
    2009-09-08
      

  11.   

    最终还是建议把字段类型改为datetime的.alter table tb alter column fdate datetime
      

  12.   

    --> 测试数据:[tb]
    if object_id('[tb]') is not null drop table [tb]
    go
    create table [tb]([col] varchar(50))
    insert [tb]
    select '2008-8-8'update tb set col=convert(varchar(10),cast(col as datetime),120)
     
    select * from tb/*
    col
    --------------------------------------------------
    2008-08-08(1 行受影响)
    */
      

  13.   

    select convert(varchar(10),cast(useddate as datetime),120)
    我用以上代码测试,出现下面的错误提示。
    列名 'useddate' 无效。
    ---------------------------分割线---------------------------
    update labrecord
    set useddate=convert(varchar(10),cast(useddate as datetime),120)
    用以上代码,提示下面错误。
    从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。我的useddate是我要转变的列,其类型是varchar,长度为10。
      

  14.   

    update tablename set 时间列=convert(varchar(10),时间列,120)
      

  15.   

    alter table tb alter column 时间列 datetime
    update tb set 时间列=convert(varchar,时间列,120)
      

  16.   

    select convert(varchar(10),cast(useddate as datetime),120) 
    我用以上代码测试,出现下面的错误提示。 
    列名 'useddate' 无效。 第一句,你表都没有,当然无效 
    select convert(varchar(10),cast(useddate as datetime),120) FROM TB---------------------------分割线--------------------------- 
    update labrecord 
    set useddate=convert(varchar(10),cast(RTRIM(LTRIM(useddate)) as datetime),120) 
    用以上代码,提示下面错误。 从 char 数据类型到 datetime 数据类型的转换导致 datetime 值越界。你的字段是CHAR类型的吗?字段长度是多少?update labrecord 
    set useddate=convert(varchar(10),cast(RTRIM(LTRIM(useddate)) as datetime),120) 这样试试
      

  17.   

    wait notify zmlija  a