Python3操作MySQL查询两个时间戳之间的数据无返回结果问题
问题根因
- 日期格式不匹配:MySQL的
DATE()函数返回的日期格式为YYYY-MM-DD,你调用函数时传入的日期是MM/DD/YYYY格式,二者格式不统一导致条件匹配失败,所以查询返回空结果。
解决方案
方案1:调整传参格式
直接将传入的日期参数修改为MySQL支持的YYYY-MM-DD格式,修改调用逻辑即可:
# 修改前 # print(get_payroll_payments_by_date('08/01/2021', '08/01/2021')) # 修改后 print(get_payroll_payments_by_date('2021-08-01', '2021-08-01'))
方案2:SQL层转换日期格式
如果需要保留现有MM/DD/YYYY的传参格式,可以在查询语句中用STR_TO_DATE函数把参数转换为标准日期格式,修改后的查询函数如下:
def get_payroll_payments_by_date(start, end): c = create_connection() cur = c[0] db = c[1] cur = db.cursor() cur.execute(""" select payment from payroll where DATE(payment_date) between STR_TO_DATE(%s, '%m/%d/%Y') and STR_TO_DATE(%s, '%m/%d/%Y') order by payment_date desc; """, (start, end)) data = cur.fetchall() return data
如果修改后仍然查询不到结果,可以先执行SELECT DATE(payment_date) FROM payroll LIMIT 10查看数据库返回的日期实际格式,确认和匹配条件的格式一致即可。
内容的提问来源于stack exchange,提问作者Mike C.
相关产品推荐
相关产品推荐

