python - Sqlite3 Python中的DateExpiry
问题描述
我试图弄清楚如何使用 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(below) 中的整个日期。如何重写 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)
解决方案
如果列的格式date
是DD-MM-YYYY
,首先必须将其更改为YYYY-MM-DD
,因为这是 SQLite 唯一有效的格式:
UPDATE medicine
SET date = SUBSTR(date, -4) || '-' || SUBSTR(date, 4, 2) || '-' || SUBSTR(date, 1, 2);
然后使用该函数DATE()
获取从现在到现在 + 30 天date
之间的行:
SELECT date
FROM medicine
WHERE date BETWEEN DATE('now') AND DATE('now', '+30 day')
推荐阅读
- javascript - 获取除某些孩子之外的 ul 的 HTML
- php - 显示 meganto 模块中的所有 mysql 列
- javascript - 如何为自定义库开玩笑
- excel - 如何返回字符串的一部分?
- flutter - 单击按钮时颤动向下滚动并打开文本字段
- ios - 如何在 UIBezierPath Swift 中绘制这样的曲线?
- c++ - 'if((mask | u)==u)' 是什么意思?
- typescript - 如何在 nuxt.js 中使用 axios 获取 API?
- youtube - 以编程方式获取当前正在播放的 YouTube 视频
- javascript - 通过 CSS 或 JavaScript/jQuery *不*导致对齐失败的方式来删除文本?