2013-11-26 64 views
0

嗨朋友我必須使用存儲過程顯示db中的記錄。想要顯示存儲過程中的具體日期記錄

要顯示一個日期記錄我用另一個日期:

and Tbl_GDS_Request.RequestedDate between '''+ convert(varchar(20),@p_FromDate) + ''' 
and ''' + convert(varchar(20), @p_ToDate) + '''' 

,但如果我想只顯示fromdate記錄(即只在2013年11月7日最新記錄)或最新記錄,即只有2013/11/07日期的記錄。

我該如何顯示單一日期的記錄?

請幫我解決它。

+0

使用'='而不是'between'。但是'Tbl_GDS_Request.RequestedDate'的數據類型是'date'還是'varchar'? –

+0

這是一個日期時間數據類型 – user2915027

+0

你不應該使用具有日期/時間/時間戳類型的'BETWEEN' _especially_ [在SQL Server上](http://sqlblog.com/blogs/aaron_bertrand/archive/2011/10/19/what尚北道之間和最魔鬼具有功能於common.aspx)。它也看起來像通過字符串連接創建查詢,這會打開SQL注入;您應該使用準備好的語句,這將使您能夠使用實際的日期/時間類型 - 您的當前方法在所有情況下都不安全。爲了更清晰的問題,您預期的傳入參數是什麼? –

回答

0

爲每個語句創建OR選擇。 這看起來像下面這樣。 (代碼未經測試)

CREATE PROC Procname 
(
@date1 datetime IS NULL, 
@date2 datetime IS NULL 
) 
AS 
select 
* 
from 
atable a 
where 
--when both dates are filled in 
(@date1 is not NULL 
    AND @date2 is not NULL 
    AND a.date >= @date1 
    AND a.date <= @date2) 
OR 
--when only todate is filled in 
(@date1 is NULL 
    AND @date2 is not NULL 
    AND a.date <= @date2) 
OR 
-- when only fromdate is filled in 
(@date1 is not NULL 
    AND @date2 is NULL 
    AND a.date >= @date1) 
相關問題