我试图使用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)')
最佳答案
对于较新的float
和datetime
列,不允许将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))