请教,SQL把字符串转换成日期输出我的数据库表里,字符串格式varchar,他的值是:20121220110513表1ID name riqi
1  张三 20121220110513
2  李四 20091224021523
3  王明 
4  赵欣 20110608030512怎么样才能SQL把字符串的日期,输出日期类型呢?Select id,name,Convert(datetime,substring(riqi,1,8))但是输出的却是:2012-12-20 00:00:00.000
日期输出对了,但是时间呢,分秒呢?为什么就变成0了呢?请教各位,写个SQL。谢谢!

解决方案 »

  1.   

    Select id,name,Convert(datetime,riqi)
      

  2.   

    消息 241,级别 16,状态 1,第 1 行
    从字符串向 datetime 转换时失败。
      

  3.   

    http://topic.csdn.net/u/20120907/11/037f69ed-3230-4760-95b8-770de6c6dcbb.html
    请 参考 这个 
      

  4.   

    DECLARE @a VARCHAR(64)='20121220110513'
     SELECT SUBSTRING(@a,1,4)+'-'+SUBSTRING(@a,5,2)+'-'+SUBSTRING(@a,7,2)+' '+SUBSTRING(@a,9,2)+':'+SUBSTRING(@a,11,2)+':'+SUBSTRING(@a,13,2)
     /*
     
     ---------------------------------
     2012-12-20 11:05:13
     
     (1 行受影响)
     
     */
      

  5.   

    晕,你没说你的是什么版本,这是08之后才支持的,换这个吧:DECLARE @a VARCHAR(64)
    set @a='20121220110513'
      SELECT SUBSTRING(@a,1,4)+'-'+SUBSTRING(@a,5,2)+'-'+SUBSTRING(@a,7,2)+' '+SUBSTRING(@a,9,2)+':'+SUBSTRING(@a,11,2)+':'+SUBSTRING(@a,13,2)
      /*
      
      ---------------------------------
      2012-12-20 11:05:13
      
      (1 行受影响)
      
      */
      

  6.   

    感谢DBA_Huangzj
    我的是SQL2005你写的对了,没有问题。
      怎么样才能把我的字段代入
    20121220110513
    呢?怎么样代替呢?
       我的数据库里的列里才是20121220110513
    输出的时候,怎么样才能,转换成日期。?
      

  7.   

    SELECT
    SUBSTRING(列名,1,4)+'-'+SUBSTRING(列名,5,2)+'-'+SUBSTRING(列名,7,2)+' '+SUBSTRING(列名,9,2)+':'+SUBSTRING(列名,11,2)+':'+SUBSTRING(列名,13,2)
    FROM
    表名
      

  8.   

    自己加了一个Case When语句,行了。
    但是,这个SQL语句写的很长,有简约的方法吗?
      

  9.   

    可以转成字符串格式的日期,如果不要求精确时刻的话。
    convert(varchar(10),xx,120)