http://sqlfiddle.com/#!6/a694d/10
我正在尝试将日期字符串转换为十进制值,并将该值与Excel提供的值相匹配。从SQLFiddle中,一些值匹配,但稍后在列表中,它会被一个值关闭。
我尝试了两种不同的方法,仍然无法找到合适的组合来获得与excel产生的数字相匹配的数字。
这是我正在运行的查询(来自SQLFiddle):
SELECT
date_as_nvarchar_max
,excel_value_as_number
,cast((cast(date_as_nvarchar_max as datetime)-'1899-12-30T00:00:00')AS NUMERIC(10, 2)) as test1
,cast((cast(date_as_nvarchar_max as datetime)-'1899-12-31T00:00:00')AS NUMERIC(10, 2)) as test2
,datediff(day, '1899-12-30T00:00:00', date_as_nvarchar_max) as test3
,datediff(day, '1899-12-31T00:00:00', date_as_nvarchar_max) as test4
FROM EXCEL_DATES
答案 0 :(得分:0)
我认为你会发现一个人关闭的值是1900年3月1日之前的日期。
这是因为Excel incorrectly assumes that the year 1900 is a leap year。
答案 1 :(得分:0)