解决方案 »

  1.   

    20080101这种格式如果转成date类型就会加-,只能转int、nvarchar/varchar这些类型
      

  2.   

    楼主应该这样:SELECT DateKey
    ,cast(datekey as date) k1
    ,convert(varchar(10),cast(datekey as date),122) as k2
    ,convert(varchar(10),cast(datekey as date),112) as k3
    ,convert(varchar(19),cast(datekey as datetime),120) as k4
    ,year
    ,Qu
    from tbl
      

  3.   

    整合到cognos系统中就有影响了....前辈 您意思是20080101这种格式不能转换为日期类型的20080101格式?
      

  4.   

    整合到cognos系统中就有影响了....前辈 您意思是20080101这种格式不能转换为日期类型的20080101格式?纯日期格式里面没有20080101这种,这些是int或者字符型。你可以考虑用int啊
      

  5.   

    是varchar
    楼主转换后的仍是date型啊,sql server本身有个默认格式的,显示出来的肯定都一样了
    要么楼主在前台去处理(日期格式化),sql不用处理
      

  6.   

    完全逻辑矛盾的啊!
    如果是日期类型,内部就是一组二进制的值,值是不存在格式的。
    只有将值转换为字符串形式输出,才会用到格式。楼主你到底想干什么?
    .....用报表工具cognos做报表,需要“20080101”格式的date类型
      

  7.   

    同意10楼的说法.
     值是不存在格式的值要以什么格式,我想你在cognos中可以设置的.而不是在sql上改格式.
    提供给cognos以日期类型,在cognos上设置日期格式。
    select cast(datekey as datetime) from tb1 
      

  8.   

    完全逻辑矛盾的啊!
    如果是日期类型,内部就是一组二进制的值,值是不存在格式的。
    只有将值转换为字符串形式输出,才会用到格式。楼主你到底想干什么?
    .....用报表工具cognos做报表,需要“20080101”格式的date类型
    没有“20080101”格式的date类型这种东西!
    如果 cognos 需要字符串"20080101",你的数据库字段已经是字符串了,直接给它 datekey;
    如果 cognos 需要整数 20080101,给它 Convert(int, datekey);
    如果 cognos 需要日期 2008-1-1,给它 Convert(datetime,datekey,112),至于 cognos 准备如何输出,再设它的格式好了。
      

  9.   

    DateKey的nvarchar类型转成char或varchar类型更节省空间,转成DateTime类型后显示的格式会有变化。
      

  10.   

    数据类型是date,显示格式是YYYYMMDD吗?一般来说SQLServer只能做到数据类型是date,至于显示格式要看前台要怎么显示
      

  11.   

    前辈您这个逻辑让我有种不明觉厉的感觉,但有好像很有道理
    我尝试转换格式同样是把nvarchar转换为date,用cast函数转换另外一个表就OK,但同样的语法转换上面的表就报错,上面的表我也确认过,没有空值什么的
      

  12.   

    OutDate里面可能存在非法字符了
    可以先到sql server的查询分析器里select 一下,看是哪笔数据有问题,修正后再转换select cast(OutDate as date) from zg_sales_des
      

  13.   

    SELECT Convert(datetime,'20140231',112)
    这不就出错了!
    所以日期数据还是用 datetime 存储,显示输出时再按需要格式化。
    否则多出各种麻烦来。用下面的语句找出错的数据吧。
    SELECT *
      FROM zg_sales_des
     WHERE ISDATE(outdate)=0
      

  14.   

    那就是了,楼主OutDate数据有非法字符了,点结果集看到了哪一笔了,下面一笔就是有问题的