我试图使用Python将Excel工作簿数据导入SQL Server,但是当我尝试导入值时,在TERM_DATE列下它表示它与float数据类型不兼容。

该列在Excel中的外观如下:

TERM_DATE
43101
43101
43101
43101
43132


我需要的SQL Server列看起来像什么

TERM_DATE
2018-01-01
2018-01-01
2018-01-01
2018-01-01
2018-02-01


额外信息:

TERM_DATE是我创建的表中的列,是SQL Server中的date数据类型;当我使用Python尝试将TERM_DATE列从Excel导入到SQL Server时,出现以下错误:


  DataError :(“ 22018”,“ [22018] [Microsoft] [ODBC SQL Server驱动程序] [SQL Server]操作数冲突:float与日期(206)(SQLExecDirectW)不兼容; [22018] [Microsoft] [ODBC SQL Server无法准备驱动程序[SQL Server]语句。(8180)')

最佳答案

对于较新的floatdatetime列,不允许将date转换为datetime2或从datetime转换的恶作剧。 SQL Server datetime和Excel日期都以浮点数形式在内部存储,但是Excel的“零日期”为1900-01-00,而SQL Server使用1900-01-01,而Excel则存在一个错误,该错误将1900视为飞跃。年。

因此,如果您从Excel编号中减去2,然后转换为date然后转换为,则应该获得相同的值。

例如:

insert into T(id, date) values (?, cast(?-2 as datetime))

07-24 09:37
查看更多