2012030610:27:18 (nvarchar)2012-04-26 00:00:00.000    (datetime)上边2个字符串分别来自2个表的2个字段问题:
现在想把他们都转换为日期类型,并且只取日期部分,不取分时部分

解决方案 »

  1.   


    declare @x1 nvarchar(30),
            @x2 datetimeselect @x1='20120306 10:27:18',  -- nvarchar
           @x2='2012-04-26 00:00:00.000'  -- datetimeselect cast(convert(datetime,@x1) as date) 'x1',
           cast(@x2 as date) 'x2'/*
    x1         x2
    ---------- ----------
    2012-03-06 2012-04-26(1 row(s) affected)
    */
      

  2.   

    DECLARE @a nvarchar(max)='2012030610:27:18'
    DECLARE @b datetime='2012-04-26 00:00:00.000'SELECT SUBSTRING (@a,1,4)+'-'+SUBSTRING(@a,5,2)+'-'+SUBSTRING(@a,7,2)
    SELECT CONVERT(date,@b)
    /*
    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    2012-03-06(1 行受影响)
    ----------
    2012-04-26(1 行受影响)*/
      

  3.   


    我在查询分析器里边执行服务器: 消息 243,级别 16,状态 1,行 8
    类型 date 不是已定义的系统类型。
    服务器: 消息 243,级别 16,状态 1,行 8
    类型 date 不是已定义的系统类型。怎么会这样的提示?