SQL 服务器存储过程 oDate 作为参数无法识别
SQL Server stored procedure oDate as a parameter not recognized
如何将执行命令中的日期(数据类型DateTime
)传递给运行存储过程?
这是代码片段。
ALTER PROCEDURE [dbo].[datefiltered]
@months_margin int,
@oDate datetime
AS
BEGIN
SELECT *
FROM dbo.table20
WHERE date = oDate
-- more code...
END
我正在尝试使用 GETDATE()
函数执行此存储过程,甚至将日期和时间作为字符串传递,但它不起作用。
exec datefiltered 23 getDate()
因为要应用日期过滤器,所以不需要传递日期时间值。您可以转换为 DATE 数据类型以获得相等性。
select * from dbo.table20
where date = CAST(@oDate AS DATE)
此外,如果您只是将 GETDATE() 作为默认值传递,您可以将 getdate 保留为默认值,如下所示:
Alter procedure [dbo].[datefiltered]
@months_margin int,
@oDate datetime = null
AS
Begin
IF @oDate IS NULL
BEGIN
SET @oDate = CAST(GETDATE() AS DATE)
END
使用默认值调用过程时,不需要为其传递参数值。
exec datefiltered 23 -- getdate() filter is applied automatically
ALTER PROCEDURE [dbo].[datefiltered]
@months_margin int,
@oDate datetime
AS
BEGIN
SELECT *
FROM dbo.table20
WHERE date = CAST(@oDate AS DATE)
-- more code...
END
正在执行这个存储过程:
exec datefiltered 23, '2010-02-30'
如何将执行命令中的日期(数据类型DateTime
)传递给运行存储过程?
这是代码片段。
ALTER PROCEDURE [dbo].[datefiltered]
@months_margin int,
@oDate datetime
AS
BEGIN
SELECT *
FROM dbo.table20
WHERE date = oDate
-- more code...
END
我正在尝试使用 GETDATE()
函数执行此存储过程,甚至将日期和时间作为字符串传递,但它不起作用。
exec datefiltered 23 getDate()
因为要应用日期过滤器,所以不需要传递日期时间值。您可以转换为 DATE 数据类型以获得相等性。
select * from dbo.table20
where date = CAST(@oDate AS DATE)
此外,如果您只是将 GETDATE() 作为默认值传递,您可以将 getdate 保留为默认值,如下所示:
Alter procedure [dbo].[datefiltered]
@months_margin int,
@oDate datetime = null
AS
Begin
IF @oDate IS NULL
BEGIN
SET @oDate = CAST(GETDATE() AS DATE)
END
使用默认值调用过程时,不需要为其传递参数值。
exec datefiltered 23 -- getdate() filter is applied automatically
ALTER PROCEDURE [dbo].[datefiltered]
@months_margin int,
@oDate datetime
AS
BEGIN
SELECT *
FROM dbo.table20
WHERE date = CAST(@oDate AS DATE)
-- more code...
END
正在执行这个存储过程:
exec datefiltered 23, '2010-02-30'