TSQL - ダイナミックSQLに日付を挿入します
-
22-08-2019 - |
質問
次のTSQLを検討してください。
SET @WhereClause1 = 'where a.Date > ' + @InvoiceDate
日付/文字列変換エラーが発生します。 @InvoiceDate
DateTime変数です。適切な構文は何ですか?
解決
これはうまくいくかもしれません。
SET @WhereClause1 = 'where a.Date > ''' + convert(varchar, @InvoiceDate) + ''''
値がnullの場合、エラーが発生しますが。
他のヒント
これは機能します:
SET @WhereClause1 = 'where a.Date > ''' + cast(@InvoiceDate as varchar(100)) + ''''
最初に文字列としてクエリを作成するので、@invoicedateを@invoiceateを弦に変換する必要があると思います。 これ. http://www.databasejournal.com/features/mssql/article.php/10894_2197931_1/working-with-server-server-server-datetime-variables-two----- dates-and-times-in-different--times- formats.htm
...そして、おそらく引用符で日付文字列を囲む必要があります。
null値やその他の検証をチェックする必要があるため、実際に呼び出しルーチンに日付文字列を構築する方が良いでしょう。
EXEC sp_executesql N'SELECT * FROM Orders WHERE a.Date > @date',
N'@date datetime',
@date = @InvoiceDate
所属していません StackOverflow