Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Unterschied zwischen datetime-Konvertierungen in MSExcel und SQL Server

Konzentriert man sich speziell auf DATETIME, wo die Umwandlungen von int erlaubt sind, gibt es zwei Gründe für die Diskrepanz.

  1. Excel verwendet eine Basis von 1 für Datumsangaben, SQL Server verwendet 0, d. h. 01/01/1900 Wenn es in Excel in eine Zahl konvertiert wird, ist es 1, in SQL ist es jedoch 0:SELECT CAST(CAST('19000101' AS DATETIME) AS INT); Gibt 0.

  2. Es gibt einen absichtlichen Fehler in Excel, um die Übertragbarkeit von Lotus zu ermöglichen, wo der Fehler nicht absichtlich* war. Excel betrachtet den 29. Februar 1900 als gültiges Datum, aber 1900 war kein Schaltjahr. SQL hat dieses Problem nicht, das bedeutet also, dass es einen zusätzlichen Tag im Excel-Kalender gibt.

*(weitere Lektüre dazu deutet darauf hin, dass dies absichtlich oder als belanglos angesehen wurde)

NACHTRAG

Es gibt ein Microsoft Support Item das besagt: