для своего 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
Вы уверены, что todaysdate попадает в формат YYYY-MM-DD? (Кроме того, я не знаком с библиотеками python. Нужен ли ' для% s? Некоторые библиотеки позаботятся о них за вас.) О, у кого-то была проблема, похожая на эту на днях ... вы пытались изменить (todaysdate) в (todaysdate,)?
В качестве примечания: если UT - это временная метка или дата-время, UT >= 'YYYY-MM-DD 00:00:00' должен быть намного быстрее (особенно если UT проиндексирован); применение функций к значениям полей в условиях снижает производительность.
теперь у меня есть now = time.strftime('%Y-%m-%d'), потом selDBcmd = "SELECT UT, SJ, HW FROM homework WHERE UT >= '%s';" cur.execute(selDBcmd, (now)), но он тоже не работает






Итак, вот ответ, который я узнал после того, как еще немного поработал 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))
И, возможно, код не самый лучший и не самый чистый, который вы можете сделать / использовать