TSQL - 将日期插入动态SQL

Jef*_*eff 7 t-sql datetime date dynamic-sql

考虑以下TSQL:

SET @WhereClause1 = 'where a.Date > ' + @InvoiceDate
Run Code Online (Sandbox Code Playgroud)

我收到日期/字符串转换错误. @InvoiceDate是一个日期时间变量.什么是正确的语法?

And*_*ite 8

这可能会奏效.

SET @WhereClause1 = 'where a.Date > ''' + convert(varchar, @InvoiceDate) + ''''
Run Code Online (Sandbox Code Playgroud)

虽然如果值为null,则会引发错误.


eKe*_*ek0 6

这将有效:

SET @WhereClause1 = 'where a.Date > ''' + cast(@InvoiceDate as varchar(100)) + ''''
Run Code Online (Sandbox Code Playgroud)