You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过Python查询Azure SQL转换日期报错,Excel连接同语句正常

问题排查与解决

问题根源

报错不是Azure SQL的语法问题,是Python字符串解析错误。你用单引号包裹整个SQL语句时,内部的'01-'会提前闭合外层单引号,导致Python把01当成带前导零的十进制整数——这在Python中是不允许的(前导零整数需加0o前缀表示八进制,但显然这不是你的意图)。而Excel连接时不存在Python的字符串解析逻辑,所以SQL能正常执行。

修复方案

以下三种方式任选其一即可:

方式1:用双引号包裹整个SQL语句

将外层单引号替换为双引号,内部保留单引号:

DF=pd.read_sql("SELECT CONVERT(VARCHAR(MAX), candidate,2) AS candidate,CONVERT(datetime,'01-'+Month,23) AS Month  FROM [workspace].[abctbldata]",conn)

方式2:用三引号包裹整个SQL语句

三引号(单/双均可)可容纳内部的单/双引号,适合复杂SQL场景:

DF=pd.read_sql('''SELECT CONVERT(VARCHAR(MAX), candidate,2) AS candidate,CONVERT(datetime,'01-'+Month,23) AS Month  FROM [workspace].[abctbldata]''',conn)

方式3:转义内部的单引号

在内部单引号前加反斜杠,告知Python这是字符串的一部分而非闭合符:

DF=pd.read_sql('SELECT CONVERT(VARCHAR(MAX), candidate,2) AS candidate,CONVERT(datetime,\'01-\'+Month,23) AS Month  FROM [workspace].[abctbldata]',conn)

验证

修复后重新运行代码,Python会正确解析完整SQL语句并发送给Azure SQL执行,结果将与Excel连接时一致。

内容的提问来源于stack exchange,提问作者technical

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 21:23:23