带有Date变量的SQL Server存储过程

时间:2014-07-14 14:23:27

标签: sql-server tsql datetime stored-procedures

我需要帮助纠正以下存储过程。我只想输入07-14-2014日期,而不必输入整个datetime字符串,仍然可以从07-14-2014获取所有数据。

目前我必须输入2014-07-14 00:00:00.000

ALTER PROCEDURE [dbo].[spWWGetScrap]
    @Start_Date datetime = NULL
    ,@End_Date datetime = NULL
AS
  -- Get the latest dataset.
  SELECT        
      Casting_Part_Number, Scrap_Code, 
      Casting_Code, Pattern, Quantity
  FROM            
      CleaningRoom_Scrap
  WHERE        
      DateStamp BETWEEN @Start_Date AND @End_Date

1 个答案:

答案 0 :(得分:1)

要在日期期间包含所有活动,您需要在00:00:00.000开始日期开始,并在第二天00:00:00.000结束日期之前结束。这可以轻松地将1天添加到结束日期。

ALTER PROCEDURE [dbo].[spWWGetScrap]
    @Start_Date datetime = NULL
    ,@End_Date datetime = NULL
AS
  -- Get the latest dataset.
  SELECT        
      Casting_Part_Number, Scrap_Code, 
      Casting_Code, Pattern, Quantity
  FROM            
      CleaningRoom_Scrap
  WHERE        
       (DateStamp >= @Start_Date) AND (DateStamp < dateadd(d,1,@End_Date))

请注意,我不包括=。这仅在您在结束日期省略时间部分时才有效。