使用日期的python sql
我正在尝试获取本周(周一至周日)内的所有记录,然后我计划将它们重新插入数据库,但课程日期增加了7天。但是,我得到以下错误:使用日期的python sql,python,sql,datetime,sqlite,Python,Sql,Datetime,Sqlite,我正在尝试获取本周(周一至周日)内的所有记录,然后我计划将它们重新插入数据库,但课程日期增加了7天。但是,我得到以下错误: sqlite3.OperationalError: near ">=": syntax error 我可能错了,但我认为这是由于python存储日期的方式造成的。若并没有,我总是可以将表中的所有记录放入数组中,并用python过滤该数组。下面是sql的代码: with sqlite3.connect("GuitarLessons.db") as db:
sqlite3.OperationalError: near ">=": syntax error
我可能错了,但我认为这是由于python存储日期的方式造成的。若并没有,我总是可以将表中的所有记录放入数组中,并用python过滤该数组。下面是sql的代码:
with sqlite3.connect("GuitarLessons.db") as db:
cursor = db.cursor()
cursor.row_factory = sqlite3.Row
sql = "select *"\
"from tblBookings"\
"where DateOfLesson >= ?"\
"and DateOfLesson <= ?"
cursor.execute(sql,(startweekd,endweekd))
BookingList = cursor.fetchall()
print(BookingList)
SQLite(不只是在Python中)不支持日期
因此,您必须将查询中的日期以及存储中的日期转换为它可以理解的格式。有两种选择:
- 自某个纪元(例如unix时间)起的秒数,可能是小数
- 字符串
%FT%T
(或不理解%F
或%T
%Y-%m-%dT%H:%m:%S
)。或者仅日期为%F“
/%Y-%m-%d”
。您可以使用不同的分隔符,但唯一会让您感到困惑的是。SQLite还有一些内置函数,可以处理ISO 8601格式的日期
我相信您可以在某个地方定义转换,以便在绑定查询参数时自动使用转换,但我不记得在哪里。手动操作保证可以工作。SQLite(不支持任何地方,不仅仅是在Python中)不支持日期
因此,您必须将查询中的日期以及存储中的日期转换为它可以理解的格式。有两种选择:
- 自某个纪元(例如unix时间)起的秒数,可能是小数
- 字符串
%FT%T
(或不理解%F
或%T
%Y-%m-%dT%H:%m:%S
)。或者仅日期为%F“
/%Y-%m-%d”
。您可以使用不同的分隔符,但唯一会让您感到困惑的是。SQLite还有一些内置函数,可以处理ISO 8601格式的日期
我相信您可以在某个地方定义转换,以便在绑定查询参数时自动使用转换,但我不记得在哪里。保证手动工作。
sqllite
要求日期采用YYYY:MM:DD
格式。您可能应该对以下参数使用strftime
:
endweekd = endweekd.strftime("%Y:%m:%d")
startweekd = startweekd.strftime("%Y:%m:%d")
sqllite
要求日期采用YYYY:MM:DD
格式。您可能应该对以下参数使用strftime
:
endweekd = endweekd.strftime("%Y:%m:%d")
startweekd = startweekd.strftime("%Y:%m:%d")
日期是如何存储在表中的?您能否最好使用命令行客户端显示一些行,以便我们知道实际存储的是什么?表中的日期是如何存储的?您是否可以显示一些行(最好使用命令行客户端),以便我们知道实际存储的是什么?用于日期操作的SQLite函数期望符合ISO 8601的日期组件之间的
-
,而不是:
。用于日期操作的SQLite函数期望-
,不:
根据ISO 8601在日期组件之间。好的,所以我需要首先检查我的数据库并更改我的日期,然后返回到我的代码并以该格式输入日期。还有什么我需要做的吗?(上课时问而不是现在做,所以没有时间)@user2711309,我想不出任何重要的事情。请记住,SQLite与python一样是动态类型化的,因此即使模式中有其他内容,插入的条目也将是绑定的类型。注意python绑定中的自动事务。好的,所以我需要首先检查我的数据库并更改日期,然后返回到我的代码并将日期设置为该格式。还有什么我需要做的吗?(上课时问而不是现在做,所以没有时间)@user2711309,我想不出任何重要的事情。请记住,SQLite与python一样是动态类型化的,因此即使模式中有其他内容,插入的条目也将是绑定的类型。并注意python绑定中的自动事务。