SQL Server和Exceldate到数字转换有所不同

在单元格H9date31.10.2015 excel中,如果我把公式放在其他单元格中= H9+A我接收单元格42308A

在SQL Server中,我使用CONVERT(varchar, CONVERT(int, CONVERT(datetime, [Due Date])))并获取42306

为什么我得到2的差异?

我觉得有两个原因。

序列号在Excel中的第一个date是1900-01-01。 这有一个序列号1. https://support.office.com/en-gb/article/DATEVALUE-function-df8b07d4-7761-4a93-bc33-b7471bbff252在SQL中,这个date的数字数字是0而不是1。所以说相差1。

第二个单位有点奇怪。 在Excel中,date1900-02-29有一个序列号,尽pipe这个date不存在(2月29日除了在世纪之交外,每4年都有一次)。 在SQL 1900-02-29不存在(试着做这个SELECT CONVERT(int, CONVERT(datetime, '19000229')) )。 所以这就是第二个单位的差异。

其实sql和excel之间的date差别等于1.因此,在excel 01/01/1900等于1,相反,在sql 01/01/1900等于0.阅读本文