Как выбрать самую старую группу дат из sqlite - PullRequest
1 голос
/ 02 октября 2019

Я создаю новую базу данных для клиента и хочу выбрать самую старую группу дат на основе переменной, которую он вводит через графический интерфейс tkinter. Я использую Sqlite, и я не могу найти ответ, так как дата хранится в виде текста. Есть ли способ сравнения дат и выбора самых старых на основе переменной. Мне не нужно выбирать 2 даты и продукты между ними. Я хочу выбрать 3 продукта, чтобы выйти, и программа автоматически выбирает 3 самых старых продукта в базе данных. Спасибо. :)

Например, если в таблице 5 товаров:

    • товар один на 1 января.
    • продукт два на 10 января.
    • продукт третий на 3 января.
    • товар 4 от 5 февраля.
    • товар 5 от 2 февраля.

Я бы хотел выбрать самую старую 4

Таким образом, результатом будет:

    • строка, содержащая продукт 1
    • строка, содержащая продукт 3
    • строка, содержащая продукт 2
    • строка, содержащая продукт 5.

Как я могу это сделать?

Ответы [ 2 ]

1 голос
/ 02 октября 2019

Вы можете использовать ORDER BY в поле, по которому вы хотите отсортировать и ОГРАНИЧИТЬ результаты:

SELECT * FROM orders ORDER BY order_date ASC LIMIT 5

Это выберет самые низкие 5 заказов в соответствии с датой заказа. Вы можете изменить направление сортировки, используя DESC.

0 голосов
/ 02 октября 2019

Я полагаю, вы бы использовали что-то вроде (при условии, что столбец даты называется product_date)

SELECT * FROM products ORDER BY product_date ASC LIMIT 4;
  • Дата в формате ГГГГ-ММ-ДД будет отсортирована по тексту, но это будетштраф.

например,

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

С учетом комментария

что если я хочу сделать предел переменной

Это пример, когда LIMIT передается как переменная (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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...