Ошибка - неподдерживаемые типы операндов для -: 'str' и 'datetime.timedelta' В Django
Привет всем я работаю на Django-framework, я создал функцию, где я даю параметры start_date и end_date, я пытаюсь получить предыдущую неделю start_date и end_date на основе start_date, но получаю
Ошибка - unsupported operand type(s) for -: 'str' and 'datetime.timedelta'
, пожалуйста, помогите мне.
from datetime import datetime, timedelta, date
def report(request):
start_date = request.GET.get('start_date')
print(start_date) # 2022-06-06
end_date = request.GET.get('end_date')
print(end_date) # 2022-06-12
last_week_start_date=start_date - timedelta(days=7)
last_week_end_date=last_week_start_date + timedelta(days=6)
d_report = connection.cursor()
d_report.execute('''select * from table where start_date=%s and end_date=%s''',[start_date,end_date])
Дата начала_даты и дата окончания_даты являются строками. Вы должны преобразовать их в объект datetime. Это должен быть формат ISO, поэтому вы можете использовать datetime.fromisoformat()
start_date = request.GET.get('start_date')
start_date = datetime.fromisoformat(start_date)
end_date = request.GET.get('end_date')
end_date = datetime.fromisoformat(end_date)
Проблема в том, что start_time
является переменной типа str
. Вы должны сначала преобразовать ее в объект datetime
, только тогда вы сможете использовать timedelta с ней.
Для конвертации можно использовать эту кодовую базу
from datetime import datetime
datetime_object = datetime.strptime(start_time, '%Y-%m-%d')