エラーを返すこのクエリに苦労しています:文字列から日付および/または時刻を変換するときに変換に失敗しました。
これは私のグーグル検索から判断するとよくあるエラーですが、これまで試したことはありません。以下の例のように、@startdate を datetime および varchar としてキャストし、そのままにしてみました。
また、フィールド名とパラメーター名に対して convert を使用してみましたが、確かに、構文が間違っているだけかもしれません。
ALTER PROCEDURE [dbo].[customFormReport]
(
@formid int,
@startdate DATETIME
)
AS
BEGIN
SET NOCOUNT ON
DECLARE @cols AS NVARCHAR(MAX),
@query AS NVARCHAR(MAX)
select @cols = STUFF((SELECT distinct ',' + QUOTENAME(fieldname) from FormResponse WHERE FormID = @formid AND value IS NOT NULL FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)')
,1,1,'')
set @query = 'SELECT FormID, FormSubmissionID,' + @cols + ' from
(
SELECT FormID, FormSubmissionID, fieldname, value
FROM FormResponse WHERE FormID = ' + CAST(@formid AS VARCHAR(25)) + ' AND createDate > ' + @startdate + '
) x
pivot
(
max(value)
for fieldname in (' + @cols + ')
) p '
execute(@query)
編集:エラーの原因となるビットを追加する場合を除いて、クエリは機能します:
' AND createDate > ' + @startdate + '