如何从sqli中选择最早的日期组

2024-04-16 21:35:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为一个客户创建一个新数据库,并希望根据他通过tkintergui输入的变量选择最早的日期组。我使用的是Sqlite,似乎找不到答案,因为日期存储为文本。 有没有一种方法可以比较日期,并根据变量选择最早的几个。 我不需要选择两个日期和产品之间 我想选择3个产品出去和程序自动选择最老的3个产品在数据库中 非常感谢。:)

例如,如果表中有5种产品:

    • 1月1日产品一
    • 产品二1月10日。你知道吗
    • 产品三是1月3日
    • 产品4是2月5日。你知道吗
    • 产品5是2月2日。你知道吗

我想选最老的4个

结果呢 可能是:

    • 包含产品1的行
    • 包含产品3的行
    • 包含产品2的行
    • 包含产品5的行。你知道吗

我该怎么做?你知道吗


Tags: 方法答案文本程序数据库sqlite客户产品
2条回答

您可以在要排序的字段上使用ORDER BY并限制结果:

SELECT * FROM orders ORDER BY order_date ASC LIMIT 5

这将根据订单日期选择最低的5个订单。您可以使用DESC更改排序方向

我相信您会使用以下内容(假设date列命名为product\u 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_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

相关问题 更多 >