首页 > 解决方案 > 尝试在存储过程中设置默认参数值,但在 CONVERT 上出现错误

问题描述

希望在存储过程中设置默认值但遇到错误,CONVERT似乎不存在。CONVERT在正文中工作,但不在存储过程的 params 部分中。如何将参数设置@StartDate为过去 24 个月的默认值?

CREATE PROCEDURE [dbo].[MyStoredProc]
    @Id INT = NULL,
    @startDate DATETIME = CONVERT(DATE, DATEADD(MONTH, -1 * 24, GETDATE())),   -- last 24 months
    @endDate DATETIME = CONVERT(DATE, GETDATE())
AS
BEGIN
    SELECT @startDate;
END
GO

标签: sqlsql-servertsql

解决方案


这样可行!

CREATE procedure [dbo].[MyStoredProc]
    @Id int = null
    ,@startDate datetime = null
    ,@endDate datetime   = null
as
begin
    SET @startDate = ISNULL(@startDate, CONVERT(DATE, DATEADD(MONTH, -1*24, GETDATE())));
    select @startDate;
END
GO

推荐阅读