Ganz einfach: Wenn es kein Datum gibt, kann man es nicht als Datum speichern.
Alternative ist also dann doch wieder der String. Ist es ein vollständiges Datum dann ist das so, ist es nur eine Jahreszahl, dann ist das auch so.
Schwierig wird es, wenn man dann auch noch danach sortieren will. Dann wird es eher strubbelig.
Man könnte also hergehen und das Datum einfach so, wie es ist, als String speichern und zusätzlich noch ein "künstliches" Datum generieren, was man ebenfalls (in einem zweiten Feld vom Typ Integer) speichert, dabei erhalten die Autoren vor dem Jahr Null einen negativen Wert.
Dort baut man sich dann ein passendes Datum zusammen, z. B. sowas:
Autor | Datum | Sortierdatum | VorChristi |
Ernst Jünger | 29.03.1895 | 18950329 | 0 |
Pythagoras | 570 | -05700000 | 1 |
Jacob Abbott | 1803 | 18030000 | 0 |
Sortieren könnte man dann in der Art:
select Autor, Datum from tabelle order by Sortierdatum, Autor
Damit hätte man dann alle Autoren aufsteigend nach Datum vom "Anbeginn der Zeit" bis in die "unabsehbare Zukunft" sortiert. Die Autoren, die über kein vollständiges Datum verfügen, befinden sich dabei immer am Anfang der Autoren eines Jahres. Möchte man diese an das Jahresende "verbannen" dann muss man halt die vier Nullen, die momentan den Jahresanfang "symbolisieren", durch z. B. vier Neunen ersetzen. Damit sind sie immer die "Letzten" im entsprechenden Jahr. Vor dem Jahr Null verhält es sich genau umgekehrt.