Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将日期从python输入数据库_Python_Sql_Date - Fatal编程技术网

将日期从python输入数据库

将日期从python输入数据库,python,sql,date,Python,Sql,Date,我在下面的查询中尝试在sql查询中传递开始日期和结束日期 def get_data(start_date,end_date): ic = Connector() q = f""" select * from example_table a where a.date between {start_date} and {end_date} """ result = ic.que

我在下面的查询中尝试在sql查询中传递开始日期和结束日期

def get_data(start_date,end_date):

    ic = Connector()
    q = f"""
    select * from example_table a 
    
    where a.date between {start_date} and {end_date}

    """
    result = ic.query(q)
    return result

df = pd.DataFrame(get_data('2021-01-01','2021-01-31'))
print(df)
这将导致以下错误:

AnalysisException: Incompatible return types 'STRING' and 'BIGINT' of exprs 'a.date' and '2021 - 1 - 1'.\n (110) (SQLExecDirectW)")
我还尝试将日期分析如下:

 import datetime 
 start_date = datetime.date(2021,1,1)
 end_date = datetime.date(2021,5,13)
 df = pd.DataFrame(get_data(start_date,end_date))
但我还是犯了同样的错误。
任何帮助都将不胜感激。

在我看来,这是因为您如何将值注入sql查询中,它们不会被识别为日期值。数据库可能将
2021-01-01
解释为数学表达式,结果为
2019

你应该试着用括号括起你的值

q=f”“”
从示例_表a中选择*
其中a.date介于{start_date}和{end_date}之间
"""
或者,如果数据库库允许,最好不要直接注入值

q=”“”
从示例_表a中选择*
其中a.date介于%s和%s之间
"""
结果=ic.query(q,(开始日期,结束日期))
编辑:某些数据库库可能使用与
%s
格式不同的占位符。您可能应该查阅正在使用的db库的文档