What you need to do is copy the date to the front and then sort which by default will use the whole line as the sort-key. Then remove the date again.
I used sed to pick out everything up to the (last) date which I located by its nnnn-nn-nn format, and copy the date to the front.
After the sort, just use sed (or cut -c11- would be easier) to delete the date from the front again.
This works in linux:
sed 's/^\(.* \([0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] \)\)/\2\1/' |
sort |
sed 's/^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] //'
Giving:
12:00AM JACK SPARROW PIRATE 1886-09-07 I like Pizza Hut and DOminoz
11:00AM JOHN STAMOS 1983-08-07 I like Pizza Hut
11:00AM SANTA 1986-04-01 I like cold beer
This works for your data but could easily get pretty awkward if your data changes (for example you have multiple dates in a line).