2013-03-15 46 views
0

我在傳遞日期參數時遇到問題。錯誤在轉換日期時間從字符串在SQL Server 2005中

我得到的錯誤從字符串轉換日期時間時

轉換失敗。

我的存儲過程是下面的,請讓我知道該怎麼做,

ALTER PROCEDURE [dbo].[WEEKLY_REPORT_PROC](
    @START_DATE DATETIME, 
    @END_DATE  DATETIME,@PRACTISE_NAME NVARCHAR(MAX))--, 
    -- @D1 DECIMAL(5,2), 
    -- @D2 DECIMAL(5,2), 
    -- @D3 DECIMAL(5,2), 
    -- @D4 DECIMAL(5,2), 
    -- @D5 DECIMAL(5,2), 
    -- @D6 DECIMAL(5,2), 
    -- @D7 DECIMAL(5,2)) 
AS 
BEGIN 


EXEC SP_EXECUTESQL @QUERY 

DECLARE CP_DETAILS CURSOR FOR SELECT * FROM #TEMP 

OPEN CP_DETAILS 
FETCH NEXT FROM CP_DETAILS INTO  @RESOURCE_NAME,@DAY1,@DAY2,@DAY3,@DAY4,@DAY5,@DAY6,@DAY7,@UTILIZATION 

WHILE (@@FETCH_STATUS =0) 
BEGIN 
    SET @UTILIZATION = dbo.UTILIZATION(@START_DATE,@END_DATE,@DAY1,           @DAY2,@DAY3,@DAY4,@DAY5,@DAY6,@DAY7) 
    --INSERT INTO @WEEKLY_REPORT_DETAILS_INFORMATION VALUES(@RESOURCE_NAME, 
    --   @DAY1,@DAY2,@DAY3,@DAY4,@DAY5,@DAY6,@DAY7,@UTILIZATION) 
    UPDATE #TEMP SET UTILIZATION = @UTILIZATION WHERE [email protected]_NAME 

    FETCH NEXT FROM CP_DETAILS INTO @RESOURCE_NAME,@DAY1,@DAY2,@DAY3,@DAY4,@DAY5,@DAY6,@DAY7 
END 
CLOSE CP_DETAILS 
DEALLOCATE CP_DETAILS 
SELECT * FROM #TEMP 
--SELECT DBO.RETRIEVE(@QUERY) AS QUERY FROM CP_DETAILS 
PRINT @QUERY 
DROP TABLE #TEMP 
RETURN 
END 
END 

在中間我用一個用戶自定義函數utilization,並傳遞參數如日期字段

+2

so ...你傳遞給你的變量是什麼值? – RandomUs1r 2013-03-15 16:24:45

+0

@ RandomUs1r的執行是EXEC WEEKLY_REPORT_PROC'2012-03-31','2012-04-06','CS' – saichandan 2013-03-15 16:28:11

+0

您是否嘗試過'EXEC WEEKLY_REPORT_PROC'20120331','20120406','CS''?對於[日期時間常量](http://msdn.microsoft.com/zh-cn/library/ms187819.aspx),「YYYYMMDD」始終被解釋爲一致,但「YYYY-MM-DD」可能不是。但是你的代碼是不完整的,因爲你沒有顯示動態SQL部分:'@ QUERY'是什麼,它來自哪裏?作爲一個完整的猜測,你的動態SQL是錯誤的,但沒有更多的信息很難說。你是否添加了一些調試代碼來確定錯誤發生的位置? – Pondlife 2013-03-15 16:49:24

回答

-1

試試...

DECLARE @startdate varchar(30), @enddate varchar(30) 

SET @startdate = CONVERT(varchar(10), '2012-03-31', 101) 
SET @enddate = CONVERT(varchar(10),'2012-04-06', 101) 


EXEC WEEKLY_REPORT_PROC @startdate, @enddate,'CS' 

你的問題是你通過了什麼g in:YYY-MM-dd不會被SQL自動轉換爲日期時間,如'MM/dd/YYYY',將其轉換爲101格式應該可以解決您的問題。

+0

你不能在那裏轉換。 – 2013-03-15 18:39:07

+0

固定,概念差不多相同,2012-04-05轉換爲日期時間沒有問題,但MM/dd/YYYY自動轉換,所以如果你要傳遞varchars,它必須是MM/DD/YYYY。如果OP有設置格式的應用程序代碼,他需要在那裏做。 – RandomUs1r 2013-03-15 19:02:52

相關問題