Soustředíme-li se konkrétně na DATETIME, kde jsou povoleny přetypování z int, existují dva důvody pro nesrovnalost.
-
Excel používá pro data základ 1, SQL Server používá 0, tj.
01/01/1900
při převodu na číslo v excelu je 1, ale v SQL je 0:SELECT CAST(CAST('19000101' AS DATETIME) AS INT);
Dá 0. -
V excelu je záměrná chyba, která umožňuje přenositelnost z Lotusu, kde chyba nebyla úmyslná*. Excel považuje 29. únor 1900 za platné datum, ale rok 1900 nebyl přestupným rokem. SQL tento problém nemá, takže to znamená, že v kalendáři aplikace Excel je den navíc.
*(další čtení naznačuje, že to mohlo být úmyslné nebo považováno za nedůležité)
DODATEK
Existuje Položka podpory společnosti Microsoft to vyhovuje: