You would want a query that looked a little something like this:
Select substr(id_substr,1,1) your_id,
max(to_date(substr(id_substr, instr(id_substr, '|')+1))) oldest_date
group by substr(id_substr,1,1)
This is off the top of my head, and havent tested but I think I closed all the parentheses. So basically you want to group by the ID, and find the max date on the other split. Make sure you include the to_date part so you check on the actual date because you are storing this pk in varchar2 field.