如何将当前日期插入电子邮件SQL Server的主题行

Nit*_*Deb 0 sql sql-server email date getdate

我有一个存储过程,生成一个特定的表,我需要通过电子邮件发送我的电子邮件列表与特定主题行与当前日期.我使用了GETDATE()函数但是我收到了一个错误.以下是我的代码:

    if exists (select * from #Notify)
    begin

        declare
            @TableHtml varchar(max);

        exec GetTableHtml #Notify, @TableHtml = @TableHtml output;

            declare
                @FromName varchar(128) = 'AB',
                @FromEmail varchar(128) = 'ab@xy.com',
                @ToEmailListName varchar(max) = 'SomeList',
                @SubjectTxt varchar(max) = 'Some text' + cast(GETDATE() as date),
                @BodyTxt varchar(max) = 'Body content:<br><br>' + @TableHtml + '
                <br><br>Thanks.';

            exec StartSendEmail
                @FromName = @FromName,
                @FromEmail = @FromEmail,
                @ToEmailListName = @ToEmailListName,
                @SubjectTxt = @SubjectTxt,
                @BodyTxt = @BodyTxt;

    end
Run Code Online (Sandbox Code Playgroud)

我得到的错误:
在此输入图像描述

scs*_*mon 5

这是因为你需要将日期转换为varchar使+被视为串联,不是加法,或者使用CONCAT()功能,如果你的SQL Server 2012起上.

@SubjectTxt varchar(max) = 'Some text' + cast(cast(GETDATE() as date) as varchar(64)),
Run Code Online (Sandbox Code Playgroud)

或者更简单......

@SubjectTxt varchar(max) = 'Some text' + convert(varchar(10),GETDATE(),101),
Run Code Online (Sandbox Code Playgroud)

这也适用于INT,DECIMAL和其他数据类型.这就是为什么...... SELECT GETDATE() + 1没有将数字1添加到日期的末尾,它实际上增加了一天.(不要使用这个,使用DATEADD)