以下のようなSQLを実行しようとしたらエラーがでた
list=(‘1′,’2’)
sql_where = sql_where + ” and DATE_FORMAT(date, ‘%Y%m%d’) = DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY), ‘%Y%m%d’)
sql = sql + sql_where
cursor.execute(sql, list)
cursor.fetchall()
not enough arguments for format string python date_format
date_fomat()の%Y%m%d部分がプレースホルダーの引数として認識されてしまってるっぽい
こちらの記事参考にして以下のように書き直すと動いた
sql_where = sql_where + ” and DATE_FORMAT(date, ‘%%Y%%m%%d’) = DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY), ‘%%Y%%m%%d’)
→これではうまく条件がせっていされませんでした
以下のように修正
sql_where = sql_where + ” and DATE_FORMAT(date, ‘\%Y\%m\%d’) = DATE_FORMAT(DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY), ‘\%Y\%m\%d’)
%をエスケープした
コメント