Python 不在SQLite中来自不同月份的两个日期之间选择数据

Python 不在SQLite中来自不同月份的两个日期之间选择数据,python,pandas,sqlite,Python,Pandas,Sqlite,我试图从一个SQLite表中写入两个选定日期之间的WHERE子句 以下是我的例子: search_from = "19-09-2020" search_to = "19-10-2020" conn=sqlite3.connect('project.db') writer = pd.ExcelWriter("data.xlsx", engine='xlsxwriter') data = "SELECT Pro_I

我试图从一个SQLite表中写入两个选定日期之间的WHERE子句

以下是我的例子:

search_from = "19-09-2020"
search_to   = "19-10-2020"

conn=sqlite3.connect('project.db')
writer      = pd.ExcelWriter("data.xlsx", engine='xlsxwriter')
data = "SELECT Pro_ID, Pro_Name, Pro_City FROM table WHERE `Started_Date` >= ? and `Started_Date` <= ?"

df_data         = pd.read_sql(data, conn, params=(search_from, search_to))
df_data.to_excel(writer, sheet_name="Data")
search\u from=“19-09-2020”
搜索至=“19-10-2020”
conn=sqlite3.connect('project.db')
writer=pd.ExcelWriter(“data.xlsx”,engine='xlsxwriter')

data=“从表中选择Pro\u ID、Pro\u Name、Pro\u City,其中'Started\u Date`>=?和'Started\u Date`日期字符串需要转换为SQLite的有效日期格式,如下所示:

from dateutil import parser

search_from = "19-09-2020"
search_to   = "19-10-2020"

search_from = parser.parse(search_from, parser.parserinfo(dayfirst=True))
search_from = search_from.strftime('%Y-%m-%d')

search_to = parser.parse(search_to, parser.parserinfo(dayfirst=True))
search_to = search_to.strftime('%Y-%m-%d')
然后,您可以使用以下方法更新查询:

或者您可以使用:

query = "select Pro_ID, Pro_Name, Pro_City from table where Started_Date >= search_from  and Started_Date <= search_to"
或:


data=“从开始日期>=所在的表中选择专业ID、专业名称、专业城市=”?和Started_Date use BETWEEN-请参考SQLite表中YYYY-MM-DD格式的仅使用日期,并将其与相同格式的日期字符串进行比较,您的代码将正常工作。@实际上,目前我想使用DD-MM-YYYY。如果我使用YYYY-MM-DD,这就是我上面的查询,或者需要进行任何修改吗?如果YYYY-MM-DDSQLite将日期存储为文本(字符串),那么它是否也可以工作多年?因此,在表中只使用YYYY-MM-DD格式,并对传递的参数使用:search_from=“2020-09-19”和search_to=“2020-10-19”为什么期望strftime()上班之间呢?是什么使您的第二次查询具有排他性?以便格式化日期字符串。例如,search_from=“19-09-2020”strftime()仅格式化有效日期YYYY-MM-DD。对于类似19-09-2020的日期,它返回null。另外,带有
%s
修饰符的strftime()甚至不能格式化有效日期。请阅读:@forpas感谢您的评论。我已经根据这个更新了答案。@forpas和@ozturkib。谢谢你的回复@对于这两个查询,ozturkib需要使用dateutil导入解析器中的
?在第二个查询中,是否不需要使用引号?
query = "select Pro_ID, Pro_Name, Pro_City from table where Started_Date >= search_from  and Started_Date <= search_to"
data    = "select Pro_ID, Pro_Name, Pro_City from table where Started_Date between ? and ?"
df_data = pd.read_sql(data, conn, params=(search_from, search_to))
data    = "select Pro_ID, Pro_Name, Pro_City from table where Started_Date >= ? and Started_Date <= ?"
df_data = pd.read_sql(data, conn, params=(search_from, search_to))