SQL - 从dd/mm/yyyy格式化列获取最大日期

Kan*_*ani 0 sql oracle

我有db表,它有列名STATUSDATE.此列的类型为varchar2,该列已具有dd/mm/yyyy格式的数据.我想得到最近的日期(最长日期).我为此使用了max()方法,但它没有给出正确的结果,例如考虑以下日期

31/08/2014

2016年1月9日

使用max(STATUSDATE)后,结果为31/08/2014.我正在使用oracle db.

我试着使用下面的采石场,但由于上面的问题,它给出了不正确的结果

SELECT * FROM MY_DB.MY_TABLE t
inner join (
    select CLIENTNAME, max(STATUSDATE) as MaxDate
    from FROM MY_DB.MY_TABLE
    group by CLIENTNAME
) tm on t.CLIENTNAME = tm.CLIENTNAME and t.STATUSDATE = tm.MaxDate
Run Code Online (Sandbox Code Playgroud)

请有人建议正确的方法来做到这一点谢谢

Gor*_*off 6

道德:不要将日期存储为字符串.出于某种原因,数据库具有内置类型.

因此,转换为正确的日期并采取最大值,但您不需要JOIN为此:

select t.*
from (select t.*,
             rank() over (partition by client_name
                          order by to_date(statusdate, 'DD/MM/YYYY') desc
                         ) as seqnum
      from my_db.my_table t
     ) t
where seqnum = 1;
Run Code Online (Sandbox Code Playgroud)