Sqlite3 Python中的DateExpiry

Sqlite3 Python中的DateExpiry,python,sqlite,date,tkinter,Python,Sqlite,Date,Tkinter,我试图找出如何使用SQLite3语句编写函数,该语句负责提前通知我任何药物的有效期(假设30天)。我做了这样的事,但它不能正常工作 l1top = Label(fr,text="Number of serie:") l1top.grid(row=0,column=0,padx=20,sticky=E,pady=10) l2top = Label(fr,text="Name of medicine:") l2top.grid(row=1,column=0,p

我试图找出如何使用SQLite3语句编写函数,该语句负责提前通知我任何药物的有效期(假设30天)。我做了这样的事,但它不能正常工作

l1top = Label(fr,text="Number of serie:")
l1top.grid(row=0,column=0,padx=20,sticky=E,pady=10)
l2top = Label(fr,text="Name of medicine:")
l2top.grid(row=1,column=0,padx=20,sticky=E,pady=10)
l3top = Label(fr,text="Dose")
l3top.grid(row=3,column=0,padx=20,sticky=E,pady=10)
l4top = Label(fr,text="Type of medicine")
l4top.grid(row=4,column=0,padx=20,sticky=E,pady=10)
l5top = Label(fr,text="Packages:")
l5top.grid(row=5,column=0,padx=20,sticky=E,pady=10)
l5top = Label(fr,text="Bottles:")
l5top.grid(row=6,column=0,padx=20,sticky=E,pady=10)
l6top = Label(fr,text="Expiry Date:")
l6top.grid(row=7,column=0,padx=20,sticky=E,pady=10)
def expiry():
    conn = sqlite3.connect("pharmacy.db")
    cur = conn.cursor()
    cur.execute('SELECT date FROM medicine WHERE date <= 30')
    matched = [rec[0] for rec in cur]
    conn.close()
    items = [row for row in tree.get_children() if tree.item(row, 'values')[6] in matched]
    tree.selection_set(items)
expiry()

如果列
date
的格式为
DD-MM-YYYY
,首先必须将其更改为
YYYY-MM-DD
,因为这是SQLite的唯一有效格式:

UPDATE medicine 
SET date = SUBSTR(date, -4) || '-' || SUBSTR(date, 4, 2) || '-' || SUBSTR(date, 1, 2);
然后使用函数
DATE()
获取
DATE
介于现在和现在+30天之间的行:


您的
medicine
表中的
date
列表示什么?如果您提供了几行表格并显示预期的输出,这会有所帮助。我设置了到期日期列
日期
的格式是什么?请显示一些以提高获得良好响应的几率。cur.execute(“如果不存在,则创建表格”)(id整型主键、数字文本、名称文本、剂量文本、面部文本、包装文本、放大器文本、日期文本)“)正常工作,但执行此操作时,仅高亮显示红色的第6列
UPDATE medicine 
SET date = SUBSTR(date, -4) || '-' || SUBSTR(date, 4, 2) || '-' || SUBSTR(date, 1, 2);
SELECT date 
FROM medicine 
WHERE date BETWEEN DATE('now') AND DATE('now', '+30 day')