使用pyodbc将日期时间插入MS SQL表中
我正在尝试使用pyodbc将日期时间值插入到MS SQL Server的表中。如果我手动插入,比如这样:
cursor.execute("""insert into currentvalue(value1,currentdatetime)
values(55,'2014-06-27 16:42:48.533')""")
我一点问题都没有,但当我尝试这样做:
currenttime = str(datetime.datetime.now())
cursor.execute("""insert into currentvalue(value1,currentdatetime)
values(55,"""+ currenttime+")")
我遇到了这个错误:
SQL服务器在'07'附近的语法不正确,我觉得这个'07'是日期后面的数字,表示时间的开始。
我还尝试了这个:
currenttime = "'"+str(datetime.datetime.now())+"'"
现在出现了这个错误:
在将字符字符串转换为日期和/或时间时失败。
3 个回答
-1
你可以加上单引号:
currenttime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
sql_statement = f"""
insert into currentvalue(value1,currentdatetime)
values(55,'{currenttime}')
"""
cursor.execute()
7
你还可以用 datetime.strftime() 方法把日期时间对象转换成你想要的字符串格式。直接用 str(datetime) 这样做是不太好的。
currenttime = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S.%f")
这行代码的意思是获取当前的时间,并把它格式化成“年-月-日 时:分:秒.微秒”的样子。接下来,cursor.execute("""insert into currentvalue(value1,currentdatetime) values(55,"""+ currenttime+")")
这行代码是把这个时间和一个值(这里是55)插入到数据库里的一个表中。
19
把把日期时间转换成字符串的步骤去掉,改为使用参数:
....
cursor.execute("insert into currentvalue (value1,currentdatetime) values(?,?)",
(value1, datetime.datetime.now()))
....