【发布时间】:2021-10-16 03:20:48
【问题描述】:
没有变量的基本查询可以工作 - 但是在尝试使用变量时我遇到了问题
作品:
myquery = "SELECT * FROM x where range between '2021-08-08' and '2021-08-09'
尝试 1:
start_date = '2021-08-08'
end_date = '2021-08-09'
myquery = "SELECT * FROM x where range between date '{start_date}' and date '{end_date}'
myquery = myquery.format(start_date = start_date, end_date = end_date)
Error - Cannot check if varchar is BETWEEN date and date'
尝试 2:
myquery = "SELECT * FROM x where range between date ({start_date}) and date ({end_date})
myquery = myquery.format(start_date = start_date, end_date = end_date)
Error- Unexpected parameters (integer) for function date. Expected: date(varchar(x)) , date(timestamp) , date(timestamp with time zone)
尝试 3:
myquery = "SELECT * FROM x where range between CAST ({start_date} AS DATE) and CAST({end_date} AS DATE)
myquery = myquery.format(start_date = start_date, end_date = end_date)
Error : Cannot cast integer to date'
尝试 4:
myquery = "SELECT * FROM x where range between {start_date} and {end_date}
myquery = myquery.format(start_date = start_date, end_date = end_date)
Error: Cannot check if varchar is BETWEEN integer and integer'
对我需要修改的任何见解 - 围绕这一点的所有 SO 搜索都指向上述尝试。
【问题讨论】:
-
如何执行查询?
-
它通过雅典娜上的 boto 从 jupyter 笔记本运行 - 正如我所说,如果我不尝试可变部分,我可以运行它
-
请添加代码。
-
我建议你格式化后打印出
myquery的内容。您可能会发现日期的格式不符合您的预期。 -
很好的建议,我很蹩脚,不比较实际查询 - 发现问题
标签: sql amazon-web-services amazon-athena presto