Как использовать Date_FORMAT в SQL запросе?

Есть SQL запрос:

sql = "SELECT group_id, DATE_FORMAT(daterime,'%Y-%m-%d'), sum(row1),sum(row12),sum(row121),sum(row1213),sum(row12132),sum(row121) FROM db1.table1
where DATE_FORMAT(daterime,'%Y-%m-%d') = '2021-08-14'
group by group_id
order by daterimedesc;"

Использую pd.sql_read для того, чтобы получить рузультат. Но он ругается на '%Y-%m-%d'.

Мне очень важно чтобы формат даты был именно такой, так как по нему групирует данные.


Ответы (2 шт):

Автор решения: Sky

Решил задачку просто вкинув значение '%Y-%m-%d' в переменную и вставил как переменную

→ Ссылка
Автор решения: MaxU

Гораздо эффективнее преобразовать одну строку литерал в дату для сравнения:

sql = """SELECT
     group_id, daterime, sum(row1),sum(row12),sum(row121),sum(row1213),sum(row12132),sum(row121)
FROM db1.table1
where daterime = str_to_date('2021-08-14', '%Y-%m-%d')
group by group_id
order by daterime desc"""

df = pd.read_sql(sql, db_connection)

и поле daterime можно читать как есть, не преобразовывая его в строку - Pandas умеет работать с датами.


Можно поступить еще лучше и параметризировать запрос и заодно обезопасить себя от SQL Injections:

sql = """SELECT
     group_id, daterime, sum(row1),sum(row12),sum(row121),sum(row1213),sum(row12132),sum(row121)
FROM db1.table1
where daterime = %s
group by group_id
order by daterime desc"""

my_date = datetime.strptime('2021-08-14', '%Y-%m-%d')

df = pd.read_sql(sql, db_connection, params=[my_date])
→ Ссылка