我用的是oracle10g, 碰到一个怪问题1) select to_char(TO_DATE(case when '2011.05.11' > '2011.05.12' then '2011.05.11' else '2011.05.12' end,'YYYY.MM.DD'),'YYYY.MM.DD')
from dual;
得到的是 0000.00.002) select case when '2011.05.11' > '2011.05.12' then '2011.05.11' else '2011.05.12' end
from dual;
得到 2011.05.12
select to_char(TO_DATE('2011.05.12','YYYY.MM.DD'),'YYYY.MM.DD')
from dual;
得到2011.05.12我2) 就是把1) 拆开来做 就可以得到正确的日期,用1) 直接做就是0000.00.00
谁碰到过这类问题,怎么解决。郁闷中

解决方案 »

  1.   

    -- 我测试,得到的结果一样:
    sys@SZTYORA> select to_char(TO_DATE(case when '2011.05.11' > '2011.05.12' then '2011.05.11' else '2011.05.12' end,'YYYY.MM.DD'),'YYYY.MM.DD')
      2  from dual;TO_CHAR(TO_DATE(CASE
    --------------------
    2011.05.12sys@SZTYORA> select case when '2011.05.11' > '2011.05.12' then '2011.05.11' else '2011.05.12' end
      2  from dual;CASEWHEN'2011.05.11'
    --------------------
    2011.05.12sys@SZTYORA> select to_char(TO_DATE('2011.05.12','YYYY.MM.DD'),'YYYY.MM.DD')
      2  from dual;TO_CHAR(TO_DATE('201
    --------------------
    2011.05.12
      

  2.   

    select case when '2011.05.11' > '2011.05.12' then '2011.05.11' else '2011.05.12' end
    from dual;
    得到 2011.05.12
    已经是正确答案了,还整后面的干啥?
    真是多此一举
      

  3.   

    你第一个to_date的时候就改成了你系统里面的默认模式了,肯定和后面to_char里的格式'YYYY.MM.DD'不一致。
      

  4.   

    select to_char(to_date(case
                             when '2011-01-02' > '2011-01-01' then
                              '2011-01-02'
                             else
                              '2011-01-01'
                           end),
                   'yyyy.mm.dd')
      from dual
    试下这个
      

  5.   

    SELECT to_char(TO_DATE(CASE
                             WHEN '2011.05.11' > '2011.05.12' THEN
                              '2011.05.11'
                             ELSE
                              '2011.05.12'
                           END,
                           'YYYY.MM.DD',
                           'nls_date_language=american'),
                   'YYYY.MM.DD')
      FROM dual;
      

  6.   

    tangren
    谢谢 ,原来是这样子