哪种python对象类型与ms访问日期/时间字段兼容



我有一段代码试图将datetime.datetime插入ms访问日期库的date/time(而不是extended date/time(字段,但我一直收到数据类型不匹配的错误消息。所以我的问题是,我应该使用哪种类型?

我试着使用这个代码

print(type(timeCET))
>>>
datetime.datetime

crsr.execute("insert into WeatherAnalisis(Time_UTC) values ('timeCET.timedate')")
cnxn.commit()
>>>>
pyodbc.DataError: ('22018', '[22018] [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression. (-3030) (SQLExecDirectW)')

但似乎不起作用

您直接将datetime对象的名称作为带引号的文字包含在SQL语句中。因此,Access会抛出一个错误,因为您正试图将文本字符串值'timeCET.timedate'(名称,而不是实际日期时间变量的值(插入到日期时间列中。

相反,请考虑SQL参数化。(不要连接,因为在Access SQL中,单引号无法将日期括起来(。

# PREPARED STATEMENT WITH QMARK
sql = "insert into WeatherAnalisis (Time_UTC) values (?)"
# EXECUTE QUERY WITH BINDED PARAM
crsr.execute(sql, timeCET)
cnxn.commit()

虽然最初的问题没有指定变量timeCET的来源,但一旦可以从其类型中看出它是datetime

问题似乎出在matching types上。

鉴于此,以下是如何转换为字符串:


import datetime as dt

# create a datetime
t = dt.datetime.utcnow()
print(t)
print(type(t))

# now convert to string
u = t.strftime("%m/%d/%Y, %H:%M:%S")
print(u)
print(type(u))

这是输出:

2022-03-26 17:00:52.998699
<class 'datetime.datetime'>
03/26/2022, 17:00:52
<class 'str'>

变量t的原始类型为datetime

现在(对于变量u(更改为string

现在可以将其解析到数据库中(或更改为有效的格式(。

相关内容

  • 没有找到相关文章

最新更新