Per passare dai valori di Excel, prova questo:
select date('1899-12-30') + interval <number> days
Ad esempio:
select date('1899-12-30') + interval 40000 days
Restituisce il 6 luglio 2009, proprio come in Excel.
In altre parole, puoi inserire il valore come intero e quindi eseguire la conversione in SQL.
In realtà sono un po' sorpreso perché la data 0 su Excel è essenzialmente il 0 gennaio 1900, che è il 31 dicembre 1899. Sospetto che ci sia un problema con la mancanza dell'anno bisestile nel 1900. Excel ha il valore di "60" rappresentato come 29 febbraio 1900. È divertente, non mi ero reso conto che Excel avesse questo bug.
Quindi, il codice sopra funziona, per tutti i valori maggiori di 61.