将varchar数据类型转换为日期时间数据类型导致使用sp_send_dbmail

时间:2018-11-27 20:25:20

标签: sql sql-server

首先,请多多包涵,因为我还有很多东西要学习,如果有更好的方法,我也乐于接受建议。

业务部门需要执行计划的作业,该作业执行存储的proc并返回某些数据。他们希望将其放入一个csv文件中并通过电子邮件发送给某些用户。作业将在每月的第一天之后运行,并且存储的proc需要上个月最后一个工作日的参数。这是我的代码:

declare @query varchar(8000)

EXEC msdb.dbo.sp_send_dbmail 
@profile_name='Profile',
@recipients='steve@mycompany.com',
@subject='Portfolio Report',
--@body='See attached report',

@query = '
SET DATEFIRST 1;
DECLARE @LastBusinessDay DATE
DECLARE @LastMonth DATE
SELECT @LastMonth = EOMONTH(DATEADD(MONTH, -1, GETDATE()))
SET @LastBusinessDay = convert(DATE, dateadd(day, -(SELECT max(dayCount) 
    from (values (DATEPART(WEEKDAY, EOMONTH(@LastMonth)) - 5),
    (0 )) as allDays(dayCount)), EOMONTH(@LastMonth)), 112)

EXEC dbname..sp_create_report @LastBusinessDay,0
',

@attach_query_result_as_file=1,
@query_attachment_filename = 'PortfolioReport.csv',
@query_result_separator = ',',

我可以查询返回正确的日期和数据,但是当我将其包含在发送电子邮件的代码中时,出现以下错误

  

将varchar数据类型转换为datetime数据类型会导致超出范围的值。

我不知道自己在做什么错。如果需要添加其他内容,请告诉我。如果我需要废弃它并走另一条路线,则对这种方法并没有特别的兴趣。

0 个答案:

没有答案