Сравнение значения DATE в Python3 MySQL (mysql-connector)

для своего BOT я использую БД для получения и хранения некоторых вещей. Теперь я хочу выводить в БД только то, что новее / после сегодняшнего дня. Я написал этот код, но он не работает.

            ts = time.gmtime()
            tsy = str(ts[0])
            tsm = str(ts[1])
            tsd = str(ts[2])

            todaysdate = tsy + '-' + tsm + '-' + tsd

            selDBcmd = "SELECT UT, SJ, HW FROM `homework` WHERE DATE(UT) >= '%s';"
            cur.execute(selDBcmd, (todaysdate))
            msg = 'homework:\n\n'

            selDBc = cur.fetchall()


            await client.send_message(message.channel, selDBc)

Кто-нибудь знает, почему он все равно выводит все данные БД, а не только те, где дата после сегодняшней?

Я не новичок в python, но с этой штукой mysql-коннектора в python

И, возможно, код не самый лучший и не самый чистый, который вы можете сделать / использовать

user9596786 27.04.2018 19:29

Вы уверены, что todaysdate попадает в формат YYYY-MM-DD? (Кроме того, я не знаком с библиотеками python. Нужен ли ' для% s? Некоторые библиотеки позаботятся о них за вас.) О, у кого-то была проблема, похожая на эту на днях ... вы пытались изменить (todaysdate) в (todaysdate,)?

Uueerdo 27.04.2018 19:43

В качестве примечания: если UT - это временная метка или дата-время, UT >= 'YYYY-MM-DD 00:00:00' должен быть намного быстрее (особенно если UT проиндексирован); применение функций к значениям полей в условиях снижает производительность.

Uueerdo 27.04.2018 19:52

теперь у меня есть now = time.strftime('%Y-%m-%d'), потом selDBcmd = "SELECT UT, SJ, HW FROM homework WHERE UT >= '%s';" cur.execute(selDBcmd, (now)), но он тоже не работает

user9596786 27.04.2018 20:00
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
4
24
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Итак, вот ответ, который я узнал после того, как еще немного поработал trial and error

ts = time.gmtime()
tsy = int(ts[0])
tsm = int(ts[1])
tsd = int(ts[2])


selDBcmd = "SELECT UT, SJ, HW FROM `homework` WHERE UT >= '%s-%s-%s';"
cur.execute(selDBcmd, (tsy, tsm, tsd))

Другие вопросы по теме