Du kannst die üblichen Sortieralgorithmen verwenden (Quicksort oder Bubblesort oder was auch immer). Dabei verwendest du zum Vergleich eben das Datum. Stör dich nicht, wenn zwei daten gleich sind, dann kommt das Element einfach davor (oder dahinter, ist egal).
So erhältst du eine vor-sortierte Liste. Darin suchst du die (zusammenhängende) Teile, welche das gleiche Datum haben und behandelst das als (sub-)Liste, die du nach -was wars noch?- dem zweiten Kriterium sortierst usw.
Viel Spaß, Jochen
PS: Wenn du riesige Listen hast, könnte die Sache schneller werden, wenn du noch einen Pointer ins Record einfügst (und überhaupt mit verketteten Listen ansastatt mit Arrays arbeitest. Jedesmal, wenn ein Vergleich unentschieden ist, fügst du das neue Element oberhalb ein und weist dem Pointer das folgende Record zu. So findest hast du nach dem ersten Durchgang schon das korrekte Set der Sublisten für den nächsten Durchgang.