MySQL SQL语法错误求助:获取近3个月数据查询失败
问题分析与解决
你的SQL报错有两个核心原因:
1. MySQL不支持SQL Server的日期函数
你使用的DATEADD和GETDATE()是SQL Server专属函数,MySQL中对应的正确写法为:
- 获取当前日期:用
CURDATE()(仅日期部分)或NOW()(日期+时间) - 计算3个月前的日期:
DATE_SUB(CURDATE(), INTERVAL 3 MONTH)或DATE_ADD(CURDATE(), INTERVAL -3 MONTH)
2. 字符串拼接时缺少空格导致语法错误
你的代码片段拼接后会出现FROM panelWHERE或FROM panelLIMIT这类关键字连写的情况,MySQL无法识别。必须保证每个SQL片段的结尾或开头带有空格,让关键字之间正常分隔。
修正后的完整查询语句(Python写法)
query = 'SELECT creationdate ' \ 'FROM panel ' \ 'WHERE creationdate >= DATE_SUB(CURDATE(), INTERVAL 3 MONTH)'
若需添加LIMIT 10,写法如下:
query = 'SELECT creationdate ' \ 'FROM panel ' \ 'WHERE creationdate >= DATE_SUB(CURDATE(), INTERVAL 3 MONTH) ' \ 'LIMIT 10'
更简洁的多行字符串写法(推荐)
用三引号可避免手动加空格的麻烦:
query = ''' SELECT creationdate FROM panel WHERE creationdate >= DATE_SUB(CURDATE(), INTERVAL 3 MONTH) LIMIT 10 '''
执行上述修正后的语句,即可正常获取近3个月的记录。
内容的提问来源于stack exchange,提问作者Overflowy
相关产品推荐
相关产品推荐

