使用pyodbc将日期时间插入MS SQL表中

11 投票
3 回答
34679 浏览
提问于 2025-04-18 11:22

我正在尝试使用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()))
....

撰写回答