【发布时间】:2018-12-22 17:18:58
【问题描述】:
我正在用 Python 和 SQlite 构建一个小程序,客户可以在其中键入 YYYY-MM-DD 格式的日期,然后取回在该特定日期发生的所有播放。所有播放都存储在 Play.db 中,日期保存为:YYYY-MM-DD HH:MM
我不希望用户输入带有小时和分钟的确切日期。他只需键入年月日,该特定日期的所有戏剧都会出现。
我意识到我需要关键字 'LIKE' 并在 '%'variable'%' 之间传递我的变量以获得相似(不完全)匹配。 但是我不确定如何使用我的 SQLite 查询的语法来做到这一点:
user_input = input("Please, type the date of the play in format: 'YYYY-MM-DD':")
search_date = """SELECT * FROM play WHERE play_date LIKE ? """
cursor.execute(search_date, [(user_input)])
results = cursor.fetchall()
问题在于“结果”未填充,因为 SQL 查询正在寻找完全匹配。
因此,我尝试使用 %user_input% 或 %?%,但是很明显,变量 '%user_input%' 或 %?% 没有定义。
我明白逻辑上应该怎么做:
how to search similar strings in SQLite
但我不确定如何使用我的代码语法获得“LIKE '%'variable'%'”。
【问题讨论】:
-
你为什么要在标题中寻找演出日期?
-
对不起,我的错。我不小心弄错了。现在,我在原帖中修复了它。
-
好吧,这更有意义。你应该可以做类似
SELECT ... WHERE date(play_date) = ? -
" 将日期保存为:
YYYY-MM-DD HH:MM":Edit 您的问题并显示CREATE ...语句。 -
如果用户输入是
YYYY-MM-DD格式并且play_date列中的时间是YYYY-MM-DD HH:MM格式(或date and time functions 理解的任何其他格式),则 sn-p 将起作用.