首先,请多多包涵,因为我还有很多东西要学习,如果有更好的方法,我也乐于接受建议。
业务部门需要执行计划的作业,该作业执行存储的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数据类型会导致超出范围的值。
我不知道自己在做什么错。如果需要添加其他内容,请告诉我。如果我需要废弃它并走另一条路线,则对这种方法并没有特别的兴趣。