我正在将存储过程从SQL Server 2008导入Excel 2016,并在Excel中执行时出错:
将数据类型nvarchar转换为日期时出错
这是存储过程[LA_VOTER].[Temp].[dmv_import]
:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Arash B
-- Create date: 6/5/2018
-- Description: test for creating dynamic 'Data Entry Signature Verification' worksheeet
-- =============================================
ALTER PROCEDURE [Temp].[dmv_import]
@date DATE = NULL
AS
BEGIN
SET NOCOUNT ON;
DECLARE @date_work DATE
IF @date IS NULL
SET @date_work = GETDATE()
ELSE
SET @date_work = @date
/*count of processed*/
SELECT
vi.import_code as 'DMV Category',
SUM(CASE WHEN CONVERT(date, vi.createdate, 101) = @date_work THEN 1 ELSE 0 END) AS 'received',
SUM(CASE WHEN CONVERT(date, vi.processed_date, 101) = @date_work THEN 1 ELSE 0 END) AS 'processed'
FROM
DIMSNet.dbo.voter_import vi
WHERE
vi.import_type IN ('DMV')
AND import_code < 13
GROUP BY
import_code
END
我通过数据 - 来自其他来源的Excel在Excel中访问它。
我从SQL中选择并输入“slavote-dr1”供服务器连接; “DIMSNet”将所选表格和任何随机表格作为指示。
一旦我到达“导入数据”弹出窗口,我选择excel工作表中的单元格,我想将表格放到上面,然后单击“属性”按钮。
选择“定义”选项卡并将命令类型更改为“SQL”。
在“命令文本框”中输入可执行文件。由于数据库用于连接,我在命令行中插入了存储过程的完整路径。
Execute "LA_VOTER"."Temp"."dmv_import" ","
单击“确定”并返回“导入数据”窗口。我点击“确定”导入表格。
我收到上述错误。
我查看了脚本,无法看到此错误的来源。你能提出什么建议吗?
PS。已添加6/12/18 ----- SP在SQL中运行良好。只有在导入Excel时才会出现问题。
答案 0 :(得分:0)
失败无疑是在存储过程中。几乎可以肯定的是:
sum(case when convert(date, vi.createdate, 101) = @date_work then 1 else 0 end) as received,
sum(case when convert(date, vi.processed_date, 101) = @date_work then 1 else 0 end) as processed
我建议你找到数据中的问题并修复它们。您可以通过执行以下操作来解决问题:
sum(case when isdate(vi.createdate) = 0 then 0
when convert(date, vi.createdate, 101) = @date_work then 1
else 0
end) as received,
sum(case when isdate(vi.processed_date) = 0 then 0
when convert(date, vi.processed_date, 101) = @date_work
then 1
else 0
end) as processed
答案 1 :(得分:0)
确定使用了不同的方法并使其正常工作。 使用&#34;来自Microsoft Query&#34;我的执行脚本是: {CALL LA_VOTE.tmp.dmv_import(?)} 并将我需要的数据导入到我想要的字段中。
http://codebyjoshua.blogspot.com/2012/01/get-data-from-sql-server-stored.html