-1
我創建的SQL以下存儲過程:SQL存儲過程執行命令
CREATE PROCEDURE Sp_generate_report (@YEAR INT,
@MONTH INT)
AS
DECLARE @CATEGORY VARCHAR(20)
DECLARE @BEGIN_DATE DATE
DECLARE @END_DATE DATE
BEGIN
SELECT @BEGIN_DATE = Cast((Cast(@YEAR AS VARCHAR) + '-'
+ Cast(@MONTH AS VARCHAR) + '-' + '1') AS DATE)
SELECT @END_DATE = Cast((Cast(@YEAR AS VARCHAR) + '-' +
Cast(@MONTH AS VARCHAR) + '-' + '32') AS DATE)
SELECT TOP 1 @CATEGORY = Name
FROM dbo.Profitible_categories(@BEGIN_DATE, @END_DATE)
INSERT INTO dbo.MONTHLY_SUMMARY_REPORTS
VALUES (@CATEGORY)
END
程序創建成功,但是當我嘗試用下面的命令來執行它:
EXECUTE SP_GENERATE_REPORT 2012, 7
我收到此錯誤信息:
消息241,級別16,狀態1,過程SP_GENERATE_REPORT,8號線
從字符 字符串轉換日期和/或時間時轉換失敗。
在此先感謝您的幫助。
沒有月有32天... –
大約一半的人也沒有31天。您應該使用日期算術來獲取一個月的最後日期(開始日期+1個月 - 1天)。此外,YYYY-MM-DD格式是特定於語言環境的。您應該使用DATEFROMPARTS變體之一創建年,月和日的日期,或者YYYYMMDD格式 –
@PanagiotisKanavos - IIRC「YYYY-MM-DD」(ISO)對於投射到「日期」是明確的,但對於「 datetime'。儘管同意你的評論的其餘部分。 –