发布网友 发布时间:2023-07-01 05:56
共1个回答
热心网友 时间:2024-01-19 21:37
SQL的浮点数与时间对应关系:
Excel的浮点数与时间对应关系:
可以看到,SQL中,浮点数=从1900年1月1日零点以来所经历的的天数。而EXCEL中,浮点数是从1900年1月0日零点(也就是1899年12月31日零点,Excel这个定义略有点坑)以来所经历的的天数。因此同样的时间,在SQL和EXCEL中转化成日期后自然就会相差1天。
那么,为什么楼主看到的是相差两天呢。原因也在上图中。SQL中,1900年2月28日以后是3月1日,而Excel中,1900年2月28日以后是2月29日。显然,分歧在于1900年到底是不是闰年,到底有没有2月29日。根据闰年的定义,能被100整除的,必须是400的倍数才是闰年,所以1900年不是闰年。所以SQL是对的,EXCEL又坑爹了!
为什么EXCEL的浮点数和日期转换这么坑爹,却很少见到人们抱怨这个问题呢?这是因为人们使用日期计算的时候,往往不是直接把日期转化成浮点数,而是计算两个日期的差。只要这两个日期都在1900年3月1日以后,那么它们转化成的浮点数虽然有错,但两个数的差是正确的。