select greatest(to_date('2002-02-06','YYYY-MM-DD'),to_date('2002-02-05','YYYY-MM-DD')
,to_date('4562-02-05','YYYY-MM-DD')) from dual

解决方案 »

  1.   

    我知道了:
    SELECT GREATEST(NVL(TO_CHAR(DATE1 ,'YYYY/MM/DD'),0)
                    ,NVL(TO_CHAR(DATE2 ,'YYYY/MM/DD'),0) 
                    ,NVL(TO_CHAR(DATE3 ,'YYYY/MM/DD'),0)
                    )      
    FROM TABLE_NAME谢谢
      

  2.   

    select  DECODE(DATE1,NULL,'写一个最小值') from dual
      

  3.   

    不行了!又有问题了!
    以上取得都是 DATE1 DATE2 DATE3 中的最大日期!
    还有一个条件是在SELE_DATE之前呀应该怎么写呀?
    请大侠们帮忙
      

  4.   

    加条件
    where (SELE_DATE > DATE1) and (SELE_DATE > DATE2) and (SELE_DATE > DATE3)
      

  5.   

    不行呀!
    DATE1 DATE2 DATE3 可以为空
    加条件
    where (SELE_DATE > DATE1) and (SELE_DATE > DATE2) and (SELE_DATE > DATE3)后
    查询的结果不正确
    请大侠执教
      

  6.   

    where to_char(sele_date,'yyyy/mm/dd') > nvl(to_char(date1,'yyyy/mm/dd'),'1900/01/01')..................................
      

  7.   

    其实这条where子句怎么写都不对,
    例如
    date1             date2           date3
    1998/01/12     2002/09/12       2000/12/01
    2002/05/01     1999/11/13       2001/03/12
    2000/05/23     2001/03/06       2002/10/23你自己想想如果SELE_DATE的值为2002/01/01的话,现在的Where子句根本就不可能给你想要的数据
    如果非要用一条SQL语句来实现,我的想法是自己写个函数来解决这个问题
    如果不用一条SQL来实现的话就简单多了,这也不用我多说了
      

  8.   

    XieHK() 说得对!
    请各位在帮我想一想:
    SELECT GREATEST(NVL(TO_CHAR(DATE1 ,'YYYY/MM/DD'),'1900/01/01')
                   ,NVL(TO_CHAR(DATE2 ,'YYYY/MM/DD'),'1900/01/01') 
                   ,NVL(TO_CHAR(DATE3 ,'YYYY/MM/DD'),'1900/01/01')
                                                 )  GREAT_NYUSHABI 
    FROM TABLE
    WHERE NVL(TO_CHAR(DATE1 ,'YYYY/MM/DD'),'1900/01/01')  
                                             <TO_DATE(SELE_DATE)
     AND NVL(TO_CHAR(DATE2,'YYYY/MM/DD'),'1900/01/01')    
                                             <TO_DATE(SELE_DATE)
     AND NVL(TO_CHAR(DATE3 ,'YYYY/MM/DD'),'1900/01/01')  
                                             <TO_DATE(SELE_DATE)
    不对呀!!WHERE 条件根本就不起作用呀!不能取出SELE_DATE之前的最大的日期,再SELE_DATE之后的也取出来了!请高手帮忙!!
      

  9.   

    你的where条件处可以这样写:
    WHERE TO_DATE(NVL(TO_CHAR(DATE1 ,'YYYY/MM/DD'),'1900/01/01'),'YYYY/MM/DD')  
                                             <TO_DATE(TO_CHAR(SELE_DATE,'YYYY/MM/DD')) AND......
      

  10.   

    不知楼主是怎么解决的!?
    我认为只有两个都是DATE型才可比较!