Here's an implementation with higher performance (does not need to execute a new process per line, sorts oldest process as the last):

    ps -eo etimes,pid,args --sort=etimes | awk 'BEGIN{now=systime()} {$1=strftime("%Y-%m-%d %H:%M:%S", now-$1); print $0}'

and this allows pretty easily to change column ordering, too. For example pid, etimes, arg. And to primary sort by start time and secondary by pid, you can do something like:

    ps -eo pid,etimes,args --sort=-etimes,pid | awk 'BEGIN{now=systime()} {$2=strftime("%Y-%m-%d %H:%M:%S", now-$2); print $0}'

(the `etimes` must be sorted in reverse because it's actually count of seconds in the past for the process start time, this should match the actual execution order of the processes except if PID counter overflows on the same second for multiple processes).