Пишет, что нет данных

Суть проблемы в том, что я пытаюсь вывести данные за сегодняшний день(они там сущестсвуют), но почему-то выводит, что их нет. Может быть потому, что 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*
--------------------------------------------
→ Ссылка