Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Differenza tra le conversioni datetime in MSExcel e SQL Server

Concentrandosi specificamente su DATETIME, dove sono consentiti i cast da int, ci sono due ragioni per la discrepanza.

  1. Excel utilizza una base di 1 per le date, SQL Server utilizza 0, ovvero 01/01/1900 quando convertito in un numero in Excel è 1, tuttavia, in SQL è 0:SELECT CAST(CAST('19000101' AS DATETIME) AS INT); Darà 0.

  2. C'è un errore deliberato in Excel per consentire la portabilità da Lotus dove il bug non era intenzionale*. Excel considera il 29 febbraio 1900 una data valida, ma il 1900 non è stato un anno bisestile. SQL non presenta questo problema, quindi significa che c'è un giorno in più nel calendario di Excel.

*(ulteriori letture su questo suggeriscono che potrebbe essere stato deliberato o considerato irrilevante)

APPENDICE

È presente un elemento di supporto Microsoft che soddisfa: