怎样把字符型转换成日期型呢?
例如:20110211   转换成  2011-02-11试过to_date,但是报错了:'TO_DATE' 不是可以识别的 内置函数名称。
试过convert,发现没变!
试过cast,也报错了:从 varchar 数据类型到 datetime 数据类型的转换产生一个超出范围的值
求救求救

解决方案 »

  1.   

    select convert(datetime,'20110211',112)select convert(varchar(10),convert(datetime,'20110211',112),120)-----------------------
    2011-02-11 00:00:00.000(1 row(s) affected)
    ----------
    2011-02-11(1 row(s) affected)
      

  2.   

    select cast('20110211' as datetime)
    /*
    (无列名)
    2011-02-11 00:00:00.000
    */
      

  3.   

    cast('20110211' as datetime)
      

  4.   

    select cast('20110211' as datetime)                                                       
    ------------------------------------------------------ 
    2011-02-11 00:00:00.000(所影响的行数为 1 行)
      

  5.   


    select convert(varchar(10),cast('20110211' as datetime),120)/*
    ----------
    2011-02-11
      

  6.   

    select cast('20110211' as datetime)
    ------------------------------------------
    2011-02-11 00:00:00
      

  7.   

    是SQL,但是呢,这些字符型的日期都是预先存储在一张表上的了,字段类型为varchar,但是现在我想把它变成datetime型,并且是以例子中的形式展现。
      

  8.   

    ?declare @date varchar(20)
    set @date='20110211'
    select convert(varchar(10),cast(@date as datetime),120)/*
    ----------
    2011-02-11
      

  9.   

    如果是oracle则参考如下:select to_date('20110211','YYYYMMDD') from dual;
      

  10.   

    '20110211'加上引号,在与datetime比较时,就自动隐式转换了
    也可以这样显式转换:cast ('20110211' as datetime)
      

  11.   


    --看看你的数据是否有超出datetime类型的范围(1753--9999),或者月份有超出1—12这个范围,再也许有天数和月份对不上的,如20110230等。
    --没的话!可以直接cast
    select cast(字段 as datetime)
    from tb
      

  12.   

    --Datetime类型范围: 1753 年 1 月 1 日到 9999 年 12 月 31 日
    declare @date varchar(100)
    set @date = '20110211'select convert(varchar(10),cast(@date as datetime),120)
    where isdate(@date) = 1
      

  13.   


    use tempdb;
    /*
    create table test
    (
    [时间] nvarchar(8) not null
    );insert into test([时间]) values('20110110'),('20110111'),('20110120'),('20110228');
    */
    --在SQLServer2008下,使用date类型
    select CAST([时间] as date) from test;
      

  14.   

    select convert(varchar(10),convert(datetime,'20110211',112),120)用这个代码是是看吧。sql server里没有To_Date这个函数的。
      

  15.   

    cast('20110211' as datetime)这个是没问题的,倒是你看下你要转换的咧是否有不符合格式的数据!
      

  16.   

    顺便问一下 ,在将excel导入数据库时,能不能将类似20110212的数据转换成2011-02-12的格式导入?
     select f1 from openrowset('Microsoft.Jet.OLEDB.4.0','excel 5.0;hdr=no;database=C:\dateconvert.xls',Sheet2$)
    f1里的数据类似20110212。如果这样写select cast(f1 as datetime) from openrowset('Microsoft.Jet.OLEDB.4.0','excel 5.0;hdr=no;database=C:\dateconvert.xls',Sheet2$)
    会提示:将 expression 转换为数据类型 datetime 时出现算术溢出错误。
    而在excel里将单元格格式改为日期,单元格内容又会变成######。