使用日期的python sql

使用日期的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:

我正在尝试获取本周(周一至周日)内的所有记录,然后我计划将它们重新插入数据库,但课程日期增加了7天。但是,我得到以下错误:

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时间)起的秒数,可能是小数
  • 字符串
要使字符串的比较有效,日期必须以ISO 8601格式(或至少该顺序)存储。ISO 8601时间戳具有格式规范
%FT%T
(或不理解
%F
%T
%Y-%m-%dT%H:%m:%S
)。或者仅日期为
%F“
/
%Y-%m-%d”
。您可以使用不同的分隔符,但唯一会让您感到困惑的是。SQLite还有一些内置函数,可以处理ISO 8601格式的日期

我相信您可以在某个地方定义转换,以便在绑定查询参数时自动使用转换,但我不记得在哪里。手动操作保证可以工作。

SQLite(不支持任何地方,不仅仅是在Python中)不支持日期

因此,您必须将查询中的日期以及存储中的日期转换为它可以理解的格式。有两种选择:

  • 自某个纪元(例如unix时间)起的秒数,可能是小数
  • 字符串
要使字符串的比较有效,日期必须以ISO 8601格式(或至少该顺序)存储。ISO 8601时间戳具有格式规范
%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绑定中的自动事务。