TSQL - 将日期插入动态SQL

时间:2009-04-02 05:02:30

标签: tsql datetime date dynamic-sql

考虑以下TSQL:

SET @WhereClause1 = 'where a.Date > ' + @InvoiceDate

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

5 个答案:

答案 0 :(得分:8)

这可能有用。

SET @WhereClause1 = 'where a.Date > ''' + convert(varchar, @InvoiceDate) + ''''

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

答案 1 :(得分:6)

这将有效:

SET @WhereClause1 = 'where a.Date > ''' + cast(@InvoiceDate as varchar(100)) + ''''

答案 2 :(得分:1)

答案 3 :(得分:1)

...您可能需要将日期字符串括在引号中。

在调用例程中构造日期字符串可能实际上更好,因为您应该在那里检查空值以及其他验证。

答案 4 :(得分:1)

EXEC sp_executesql N'SELECT * FROM Orders WHERE a.Date > @date',
                   N'@date datetime',
                   @date = @InvoiceDate