Как использовать 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])