python - 如何从sqlite中选择最旧的日期组

标签 python sqlite

我正在为客户创建一个新数据库,并希望根据他通过 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;

结果:-

![enter image description here

考虑评论

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/

相关文章:

python - 按多个轴对 2D numpy 数组进行排序

python - 在 Python turtle 事件处理程序中比较坐标时出现 TypeError

python - 在 while 循环中调用时 Beautifulsoup 返回相同的结果

python多处理同步更新字典

database - 当 Sqlite 数据库损坏时技术上会发生什么以及如何检测?

python-3.x - sqlite3,完整性错误 : UNIQUE constraint failed when inserting a value

c# - 为什么这段代码会抛出 'System.ArgumentOutOfRangeException' (SQlite)?

c# - SQLite3 中的外键支持

java - SQLite 数据类型

python - 使用 Python 创建 MIDI