Reputation: 189
with engine.connect() as con:
rs = con.execute("""
SELECT datediff(STR_TO_DATE(CONCAT(year,'-',month,'-',day), '%Y-%m-%d') , current_date())
from TABLE
WHERE datediff(STR_TO_DATE(CONCAT(year,'-',month,'-',day), '%Y-%m-%d') , current_date()) < 900
group by STR_TO_DATE(CONCAT(year,'-',month,'-',day), '%Y-%m-%d');
""")
I feel the compiler is getting confused with '%Y-%m-%d', I might be wrong. Could someone help me on how to avoid this error:
Type Error:not enough arguments for format string
Upvotes: 9
Views: 5064
Reputation: 1639
You need to escape the %
:
with engine.connect() as con:
rs = con.execute("""
SELECT datediff(STR_TO_DATE(CONCAT(year,'-',month,'-',day), '%%Y-%%m-%%d') , current_date())
from TABLE
WHERE datediff(STR_TO_DATE(CONCAT(year,'-',month,'-',day), '%%Y-%%m-%%d') , current_date()) < 900
group by STR_TO_DATE(CONCAT(year,'-',month,'-',day), '%%Y-%%m-%%d');
""")
%
is a reserved character in MySQL (wildcard).
Upvotes: 4
Reputation: 1429
It sees your %
signs and thinks you want to format the string. I believe you should be able to replace them with %%
to indicate that you want the character, not a format substitution.
Upvotes: 22