为了账号安全,请及时绑定邮箱和手机立即绑定

Sqlite3 Python 中的 DateExpiry

Sqlite3 Python 中的 DateExpiry

慕姐4208626 2023-03-30 09:28:59
我试图弄清楚如何使用 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()上面的代码没有正确选择,因为它只根据天匹配,但它不包括小部件 DateEntry(下面)中的整个日期。如何重写 SQLite 语句,它获取整个日期并将所有产品与到期日期在 30 天后结束并用红色突出显示带有日期的最后一列 ([6])。e6 = DateEntry(fr,width=12,bg="darkblue",fg="white",year=2020,state="readonly",date_pattern="dd/mm/yyyy",textvariable=six)e6.grid(row=7,column=1,pady=10)
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

如果列的格式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 天之间的行:


SELECT date 

FROM medicine 

WHERE date BETWEEN DATE('now') AND DATE('now', '+30 day')


查看完整回答
反对 回复 2023-03-30
  • 1 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信