Никогда не объединяйте и не интерполируйте пользовательские данные в операторы SQL. Предпочитайте использовать переменные связывания, которые помогают избежать проблем безопасности SQL Injection, потому что данные никогда не обрабатываются как часть исполняемого оператора, квалифицируясь с двоеточием (: ) для каждой переменной, например как
SQL_query = "SELECT q1.*, "
SQL_query += " CASE "
SQL_query += " WHEN start_date BETWEEN to_date(:a,'yyyy-mm-dd') AND to_date(:b,'yyyy-mm-dd') THEN '14A' "
SQL_query += " WHEN start_date BETWEEN to_date(:c,'yyyy-mm-dd') AND to_date(:d,'yyyy-mm-dd') THEN '14B'.........."
pdf1 = pd.read_sql(SQL_query, con, params=['2020-01-01','2020-04-15','2019-01-01','2019-04-15']);
указать все четыре значения переменных в массиве params в соответствующем порядке переменных связывания a , b , c и d