2014-10-30 31 views
1

我想創建一個存儲過程時輸入的三個變量:搜索 - 存儲過程 - 日期時間變量 - 簡易分辨率?

@Bank_Number = 530 
@Branch_Number = 002 
@Date_From = 10/28/2014 
@Date_To = 10/29/2014 

它將返回匹配Bank_NumberBranch_NumberDate_FromDate_To日期之間的所有記錄。

我在這裏的代碼是不正確的,我不知道如何繼續。

Table I'm Querying in my stored procedure

ALTER PROCEDURE [dbo].[Something_Proc] 
     @Bank_Number varchar(3), 
     @Branch_Number varchar(3), 
     @Date_From datetime, 
     @Date_To datetime 
AS 
BEGIN 
    SET NOCOUNT ON; 

    DECLARE @bankNumber varchar(3) = @Bank_Number, 
      @branchNumber varchar(3) = @Branch_Number, 
      @dateCreated datetime = @Date_From, 
      @dateCreated datetime = @Date_To 

    SELECT DISTINCT  
      A.bankNumber, 
      A.branchNumber, 
      CONVERT(VARCHAR(8), A.dateCreated, 1) 
    FROM   
     dbo.(table from picture) A 
    WHERE 
     (@bankNumber IS NULL OR Bank_Number LIKE @bankNumber + '%') 
     AND (@branchNumber IS NULL OR Branch_Number LIKE @branchNumber + '%') 
     AND (@dateCreated IS NULL OR (MONTH(dateCreated) = MONTH(@dateCreated) 
             AND DAY(dateCreated) = DAY(@dateCreated) 
             AND YEAR(dateCreated) = YEAR(@dateCreated))) 
END 
+1

這些是***四***參數.... – 2014-10-30 13:59:00

+0

dateCreated列是我想要引用Date_From和Date_TO。 – 2014-10-30 14:18:26

+0

@marc_s對不起,我在一定程度的狡point之後並沒有清楚地思考。 – 2014-10-30 14:20:05

回答

0

你就不能使用這樣的事情?

WHERE 
    (@bankNumber IS NULL OR Bank_Number LIKE @bankNumber + '%') 
    AND (@branchNumber IS NULL OR Branch_Number LIKE @branchNumber + '%') 
    AND (@Date_From IS NULL OR @Date_From <= DateCreated) 
    AND (@Date_To IS NULL OR DateCreated <= @DateTo) 

基本上,無論你@Date_From@Date_To參數NULL(那麼參數是不以任何方式使用),或者如果它不爲空,那麼它用來比較DateCreated等於或大於@Date_From更大,並且等於或小於@Date_To ....

+0

先生,我感謝你的存在。 如果有一個點,你考慮結束你悲慘的可憐的存在。 請記住我。謝謝。 – 2014-10-30 14:57:22