如何在 sql 服务器中将 GETDATE(仅日期)作为参数传递?

How to pass GETDATE (Only date) as a parameter in sql server?

我只想将系统日期 (GETDATE) 作为我的 SQL 存储过程中的参数传递。但是我在执行程序时遇到错误。

SQL查询:

  ALTER PROCEDURE ST_PRO_GETUSER
  @D DATETIME = GETDATE  --// passing GETDATE as a parameter.
  AS BEGIN
    select case when branch in ('A25','B10','C10')  
    then 'BR B1' Else 'BR B2' 
    end As [COLLECTION],FIXDATE 
    from MAIN_COUNTER where TDATE=@D  --//Just want to pass date only
    group by COLLECTION,FIXDATE 
 END

 EXEC KK_SP_GETUSER_DIV

错误:

Conversion failed when converting date and/or time from character string.

我需要为此做什么?

GETDATE() 是正确的语法,而不是 GETDATE

解决了我自己

     ALTER PROCEDURE ST_PRO_GETUSER
     @Date datetime = null
     as
     IF @Date is null
     SET @Date = getdate()  --// passing GETDATE as a parameter.
      BEGIN
       select case when branch in ('A25','B10','C10')  
       then 'BR B1' Else 'BR B2' 
       end As [COLLECTION],FIXDATE 
       from MAIN_COUNTER where TDATE=@D  --//Just want to pass date only
       group by COLLECTION,FIXDATE 
     END

EXEC ST_PRO_GETUSER

要作为参数传递,您只需声明一个变量并将其传入:

DECLARE @DATE DATETIME = GETDATE();
EXEC ST_PRO_GETUSER @DATE;

如果您只需要日期,请将参数的数据类型更改为 date,然后执行:

DECLARE @DATE DATE = GETDATE();
EXEC ST_PRO_GETUSER @DATE;

但你的部分问题似乎实际上是在询问如何指定默认参数值。您不能为默认值使用函数,所以改为:

CREATE PROCEDURE ST_PRO_GETUSER
(
    @Date DATETIME = null
    -- Change to DATE datatype if you don't want a time component.
    -- @Date DATE = null
)
AS
BEGIN
    SET NOCOUNT ON;

    -- Default the @Date here is its null.
    -- Note this doesn't handle the case when the caller wants to pass in null.
    SET @Date = COALESCE(@Date,GETDATE());

    -- SP Body

    RETURN 0;
END