Si consideri il seguente TSQL:TSQL - Inserimento di Date Into SQL dinamico
SET @WhereClause1 = 'where a.Date > ' + @InvoiceDate
ottengo un errore di conversione data/string. @InvoiceDate
è una variabile datetime. Qual è la sintassi corretta?
Si consideri il seguente TSQL:TSQL - Inserimento di Date Into SQL dinamico
SET @WhereClause1 = 'where a.Date > ' + @InvoiceDate
ottengo un errore di conversione data/string. @InvoiceDate
è una variabile datetime. Qual è la sintassi corretta?
Questo potrebbe funzionare.
SET @WhereClause1 = 'where a.Date > ''' + convert(varchar, @InvoiceDate) + ''''
anche se verrà generato un errore se il valore è nullo.
Poiché la query di composizione è prima una stringa, quindi penso che sia necessario convertire @InvoiceDate in una stringa con qualcosa come this. http://www.databasejournal.com/features/mssql/article.php/10894_2197931_1/Working-with-SQL-Server-DateTime-Variables-Part-Two---Displaying-Dates-and-Times-in-Different-Formats.htm
... e sarà probabilmente necessario racchiudere le stringhe di data tra virgolette.
Probabilmente sarebbe meglio costruire la stringa di data nella routine chiamante perché dovresti controllare lì per valori nulli e forse altre convalide.
Ciò funzionerà:
SET @WhereClause1 = 'where a.Date > ''' + cast(@InvoiceDate as varchar(100)) + ''''
EXEC sp_executesql N'SELECT * FROM Orders WHERE a.Date > @date',
N'@date datetime',
@date = @InvoiceDate
questo non funziona perché si deve chiusa la data (all'interno della stringa) con virgolette – eKek0
Ok, grazie, io risolvere il problema con l' –
'' La correzione ha fatto ciò di cui avevo bisogno. grazie a tutti – Jeff