我正在用這個返回錯誤的查詢掙扎:當從字符串轉換日期和/或時間時,轉換失敗。當從字符串中轉換日期和/或時間時,轉換失敗
這是從我的谷歌搜索判斷的一個常見錯誤,但我迄今爲止沒有嘗試過。我已經嘗試將@startdate作爲datetime和varchar並單獨放置,如下例所示。
我也嘗試使用轉換字段名和參數名稱,雖然承認,我可能只是得到的語法錯誤。
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 + '
這將運行,但結果並不受參數。所有行都會返回,包括那些createDate大於輸入日期的行。 我試過將日期的樣式從120改爲101,因爲我輸入日期爲mm/dd/yyy 感謝您的幫助。 – tintyethan
@EthanPelton不是執行查詢,而是嘗試打印查詢字符串並單獨執行。你會得到正確的結果嗎?您提交的@ startdate的值是多少?什麼格式? – Taryn
大聲笑!燦爛的藍色!謝謝。 我不得不添加轉義單qoutes ... CREATEDATE> '' '+轉換(VARCHAR(10),@startdate 1,120)+ ''' – tintyethan