我正在为客户创建一个新数据库,并希望根据他通过 tkinter gui 输入的变量来选择最旧的日期组。我正在使用 Sqlite,但我似乎找不到答案,因为日期存储为文本。 有没有一种方法可以比较日期并根据变量选择最早的几个日期。 我不需要选择 2 个日期以及其间的产品 我想选择3个产品出去,程序自动选择数据库中最旧的3个产品 谢谢。 :)
例如,如果表中有 5 个产品:
- 1 月 1 日推出产品 1。
- 产品二将于 1 月 10 日发布。
- 产品三是 1 月 3 日。
- 产品 4 是 2 月 5 日。
- 产品 5 是 2 月 2 日。
我想选择最旧的 4 个
所以结果 将是:
- 包含产品 1 的行
- 包含产品 3 的行
- 包含产品 2 的行
- 包含产品 5 的行。
我怎样才能做到这一点?
最佳答案
我相信您会使用类似的内容(假设日期列名为product_date)
SELECT * FROM products ORDER BY product_date ASC LIMIT 4;
- 采用 YYYY-MM-DD 格式的日期将按文本排序,但这样就可以了。
例如
INSERT INTO products
VALUES
('Product 1','20190101'),
('Product2','20190110'),
('Product3','20190103'),
('Product4','20190205'),
('Product5','20190204');
SELECT * FROM products ORDER BY product_date ASC LIMIT 4;
结果:-
考虑评论
what if I want to make the limit a variable
这是一个示例,其中 LIMIT 作为绑定(bind)变量 (limit_var
) 传递(即替换 ?):-
def so58207795():
import sqlite3
db = sqlite3.Connection("mycart")
db.execute("CREATE TABLE IF NOT EXISTS products(product TEXT, product_date TEXT)")
db.execute("INSERT INTO products VALUES('Product 1','20190101'),('Product2','20190110'),('Product3','20190103'),('Product4','20190205'),('Product5','20190204')")
limit_var = "4"
print(db.execute("SELECT * FROM products ORDER BY product_date ASC LIMIT ?",(limit_var)).fetchall())
结果:-
E:\PYCharmPythonProjects\venv\Scripts\python.exe E:/PYCharmPythonProjects/Test001.py [('Product 1', '20190101'), ('Product3', '20190103'), ('Product2', '20190110'), ('Product5', '20190204')] Process finished with exit code 0
关于python - 如何从sqlite中选择最旧的日期组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58207795/