質問

次の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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top