如何将Pandas datetime64 [ns]值填充到MS Access

时间:2017-12-06 15:06:53

标签: python python-3.x pandas pyodbc

我有几个具有 Order_date 列的DataFrame。在所有DataFrame中, Order_date 列的dtypes是datetime64 [ns]。请注意,这些列中包含有效日期和NaT值。

打印时Order_date列的外观示例:

   Order_date

1 2017-01-01 2 NaT 3 NaT 4 NaT 5 2017-10-22

我正在尝试通过pyodbc 将这些DataFrame列填充到MS Access表中。

我收到以下错误:

pyodbc.DataError:('22008','[22008] [Microsoft] [ODBC Microsoft Access驱动程序]日期时间字段溢出(SQLExecDirectW)')

经过研究,我注意到MS Access 2016的日期/时间数据类型与ODBC数据类型 SQL_TIMESTAMP 相对应。

所以,我尝试了以下命令将datetime64 [ns]转换为SQL_TIMESTAMP:

import datetime
cursor.execute("SQL statement...VALUES(?)", datetime.datetime(order_date))  

但是,我收到此错误: TypeError:需要一个整数(获取类型Timestamp)。

如何成功将Pandas / Numpy datetime64 [ns]值填充到MS Access表中?如何将datetime64 [ns]值转换为SQL_TIMESTAMP?

1 个答案:

答案 0 :(得分:0)

IIUC - 你几乎就在那里。您只需将pd.to_datetime返回的系列分配回列:

df['Order_date'] = pd.to_datetime(df['Order_date'], errors='coerce')