SQL Server和excel日期到数字转换给出了区别

时间:2016-11-08 07:51:38

标签: sql-server excel date

在单元格31.10.2015中的日期H9的Excel中,如果我将公式放在其他单元格= H9+A中,则会收到单元格42308A

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

为什么我得到2的差异?

2 个答案:

答案 0 :(得分:1)

我认为有两个原因。

Excel中序列号的第一个日期是1900-01-01。序列号为1. https://support.office.com/en-gb/article/DATEVALUE-function-df8b07d4-7761-4a93-bc33-b7471bbff252 在SQL中,此日期的数字编号为0而不是1.因此,它的差异为1。

第二个单位有点奇怪。在Excel中,日期1900-02-29具有序列号,即使该日期不存在(2月29日每4年存在一次,除了在世纪之交)。在SQL 1900-02-29中不存在(尝试执行此操作SELECT CONVERT(int, CONVERT(datetime, '19000229')))。因此,这说明了第二个单位差异。

答案 1 :(得分:0)

实际上,sql和excel之间的日期差异等于1.因此,在excel 01/01/1900中等于1,相反,在sql 01/01/1900中等于0.读取此{{3} }