Para pasar de los valores de Excel, intente esto:
select date('1899-12-30') + interval <number> days
Por ejemplo:
select date('1899-12-30') + interval 40000 days
Devuelve el 6 de julio de 2009, tal como lo hace en Excel.
En otras palabras, puede traer el valor como un número entero y luego hacer la conversión en SQL.
De hecho, estoy un poco sorprendido porque la fecha 0 en Excel es esencialmente el 0 de enero de 1900, que es el 31 de diciembre de 1899. Sospecho que hay un problema con la falta de año bisiesto en 1900. Excel tiene el valor de "60" representado como 29 de febrero de 1900. Esto es divertido, no me había dado cuenta de que Excel tenía este error.
Por lo tanto, el código anterior funciona para todos los valores superiores a 61.