如何在 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
我只想将系统日期 (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