Пишет, что нет данных
Суть проблемы в том, что я пытаюсь вывести данные за сегодняшний день(они там сущестсвуют), но почему-то выводит, что их нет. Может быть потому, что datetime записывает вплоть до id?
@bot.message_handler(commands=["give_info"])
def info(message):
msg = bot.send_message(message.from_user.id, '''
За какой промежуток времени вам вывести информацию?
1 - за день
2 - За неделю
3 - за месяц
4 - за год
''', parse_mode='Markdown')
bot.register_next_step_handler(msg, info_day)
def info_day(message):
db = sqlite3.connect("finothtest4.db")
cur = db.cursor()
date = datetime.date.today()
if message.text == "1":
print(date)
cur.execute(f"SELECT Категория, Примечания, ЗП_РС, Размер, Карта_Нал, time
FROM fin_tab WHERE time = {date}")
data_result = cur.fetchall()
print(data_result)
if data_result == []:
bot.send_message(message.chat.id, '''За сегодняшний день вы еще не внесли никаких данных''')
else:
for row in data_result:
bot.send_message(message.chat.id, f'''
--------------------------------------------
Категория: *{row[0]}*
--------------------------------------------
Примечания: *{row[1]}*
--------------------------------------------
Зарплата/Расход: *{row[2]}*
--------------------------------------------
Размер: *{row[3]}*
--------------------------------------------
Карта/Наличные: *{row[4]}*
--------------------------------------------
Время добавления: *{row[5]}*
--------------------------------------------
''', parse_mode='Markdown')
Помимо этого прошу вас помочь с тем, как вывести данные по остальным промежуткам времени Благодарю за уделенное время
Ответы (1 шт):
Автор решения: Daniil Loban
→ Ссылка
Решение проблемы в данном случае заключается в форматировнии даты содержащейся в базе к указанному в питоне формату '%Y-%m-%d' это делается за счет встроенной в функции STRFTIME которая первым аргументом принимает формат вторым дату, образовавшееся поле нужно переименовать задав алиас через as после этого запрос будет возвращать результат.
date = datetime.date.today()
print(date)
cur.execute(f"""SELECT Категория, Примечания,
ЗП_РС,
Размер,
Карта_Нал,
STRFTIME('%Y-%m-%d', time) as date
FROM
fin_tab WHERE date ='{date}'""")
Вывод:
2023-01-03
[('category', 'comments', 100, 200, 1, '2023-01-03')]
--------------------------------------------
Категория: *category*
--------------------------------------------
Примечания: *comments*
--------------------------------------------
Зарплата/Расход: *100*
--------------------------------------------
Размер: *200*
--------------------------------------------
Карта/Наличные: *1*
--------------------------------------------
Время добавления: *2023-01-03*
--------------------------------------------