语句
select to_char(A.open_result_time, 'yyyy-MM') 时段 from xxx A运行结果
时段
------------------------
2007-01
2007-10
2007-08期望结果时段
------------------------
2007-1
2007-10
2007-8
open_result_time 是date类型,怎么解决??

解决方案 »

  1.   

    在原有的基础上,外面包上一层查询,进行格式化字符.判断,如果第6个字符为0,则为空,拼起来.
    substr(xx, 1, 5) || decode(substr(xx, 6, 1), '0', '', substr(xx, 6, 1)) || substr(xx, 7).
    语法不太记得了。 
      

  2.   


    select to_char(sysdate,'yyyy')||'-'||to_char(to_number(to_char(sysdate,'mm')))
    from dual
    这句例句你试试,应该可以得出你想要的结果
      

  3.   


    select   to_char(A.open_result_time,   'yyyy')||'-'||to_char(to_number(to_char(A.open_result_time,'mm')))
       时段   from   xxx   A 
      

  4.   

    只能分段截取,然後判斷第6位是0還是別的,0的話換成空,再把最後一位串上---decode-------------------
    select distinct
    substr(to_char(t.bdmoddate,'yyyy-mm'), 1, 5) || 
    decode(substr(to_char(t.bdmoddate,'yyyy-mm'), 6, 1), 
    '0', 
    '', 
    substr(to_char(t.bdmoddate,'yyyy-mm'), 6, 1)) || 
    substr(to_char(t.bdmoddate,'yyyy-mm'), 7) AAA
    from bdholiday t
    ----case when---------------
    select distinct 
    substr(to_char(t.bdmoddate,'yyyy-mm'), 1, 5) || 
    case substr(to_char(t.bdmoddate,'yyyy-mm'), 6, 1) 
    when '0' then '' else  substr(to_char(t.bdmoddate,'yyyy-mm'), 6, 1) end 
    || substr(to_char(t.bdmoddate,'yyyy-mm'), 7) AAA
    from bdholiday t-----------------------------
        AAA
    1 2007-10
    2 2007-11
    3 2007-6
    4 2007-9
      

  5.   

    SQL server 里的用法
    select replace(substring(CONVERT(varchar,updateTime,20),0,11),'-0','-') 时段 from [user]
      

  6.   


    SQL   server   里的用法
    select replace(CONVERT(char(11),updateTime,20),'-0','-')   时段   from   [user]