首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >运行Server存储过程的Power查询数据类型转换问题

运行Server存储过程的Power查询数据类型转换问题
EN

Stack Overflow用户
提问于 2020-11-17 19:31:34
回答 1查看 313关注 0票数 0

最新版本的Excel M365和Server 2017。

我有一个存储过程,它将日期作为其格式YYYY DD的输入,目前变量类型被设置为nvarchar(20),但我也试图通过使其类型为Date来解决这个问题。

我有一个存储过程,在this中运行时,如下所示:

代码语言:javascript
运行
复制
EXECUTE [Database1].[dbo].[SP1]
@Date = '2020-10-01'

我正在使用Power Query将其结果提取到Excel中。下面是生成的M查询在Power query中的样子:

代码语言:javascript
运行
复制
= Sql.Database("contoso.database.windows.net", "Database1", [Query="EXECUTE [Database1].[dbo].[SP1]#(lf)@Date = '2020-10-01'"])

这将按预期运行和导入数据。

但是,现在我正在尝试从Excel中的一个单元格中派生@Date值。我遵循了一个很好的教程,将Excel单元格中的数据提供给Power Query,我相信我的设置是正确的。我已经将参数命名为SDate,并将其设置为text类型,因为这是存储过程所期望的。

现在,M查询如下所示:

代码语言:javascript
运行
复制
= Sql.Database("contoso.database.windows.net", "Database1", [Query="EXECUTE [Database1].[dbo].[SP1]#(lf)@Date = SDate"])

当我运行它时,我会在Power Query中得到以下错误:

Microsoft :从字符串转换日期和/或时间时,转换失败。

我试过的另外两件事:

  • SDate创建了一个文本字符串,该字符串由单引号(即'2020-10-01' )包围,这给出了相同的错误。

  • 更改了存储过程,因此@Date变量的类型为Date。通过在SSMS中运行与上面相同的T语句来测试这一点,结果返回的时间与nvarchar相同。因此,在Power查询中,我确保了SDate参数的类型为date。然后运行M查询,这一次得到错误“错误转换类型nvarchar to date”,

我发现一件有趣的事情是,在创建了前面提到的M查询之后,如果进入运行查询的步骤的Source设置,则SQL语句框显示如下:

代码语言:javascript
运行
复制
EXECUTE [Database1].[dbo].[SP1]
@Date = SDate

在我看来,这似乎是将一个文本SDate作为日期传递给Server,而不是该参数的值。我可能弄错了。

有什么想法让它正常运行吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-17 21:53:36

如果把文字字符串放在正确的位置,它就能工作。您需要在引号中退出文字文本,并追加或插入所需的字符串。

而不是这样:

代码语言:javascript
运行
复制
[Query="EXECUTE [Database1].[dbo].[SP1] @Date = SDate"]

试试这个:

代码语言:javascript
运行
复制
[Query="EXECUTE [Database1].[dbo].[SP1] @Date = " & Sdate]

其中Sdate被定义为文字字符串'2020-10-01'

如果Sdate是一个日期,那么使用以下命令:

代码语言:javascript
运行
复制
[Query="EXECUTE [Database1].[dbo].[SP1]
@Date = '" & Date.ToText(Sdate, "yyyy-MM-dd") & "'"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64882066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档