從程式中傳遞開始日期與結束日期至儲存過程

zybing發表於2021-09-09

先來看看這個功能:
圖片描述

 

你會在程式介面放兩個文字框,讓使用者填入日期來進行查詢資料。此時你可能會想到它有三種情況出現,使用者只填第一個文字框,或只填第二個文字框,也有可能兩個均填。

這三種情況,你將怎樣處理邏輯呢?

Insus.NET所理解,如果使用者只填第一個文字框日期,第二個沒有填,那就意味著使用者是想告訴系統想查詢大於等於這個日期的記錄。

如果第一個文字框沒有填,只填第二個日期,說明是想查詢小於或等於這個日期的記錄。

如果兩個均填,說明是查詢這個日期之間的記錄。大於等於開始日期,小於等於結束日期。


在這裡,如果有結束日期判斷時,小於等於的條件,會有可能記錄不正確。因為傳於的日期,真正傳入至SQL時,它會變時xxxx-xx-xx 00:00:00.000對吧。
如果所查詢的欄位包含有時間的話,就不準確了。 記錄有2015-10-23 09:55:13值,但你傳的日期如2015-10-23,經轉換後為2015-10-23 00:00:00,此時使用小於等於就查詢不到這筆記錄了。

因此要處理結束日期時,正確使用條件是把結束日期加一天,用小於條件來處理。

 
在儲存過程中,你可以這樣寫:
圖片描述


得到where條件,你就可以進行下一步了:
圖片描述

上面#33和#34行程式碼判斷,如果使用者兩個文框的日期都沒有填寫時,直接是查詢所有日期的記錄。

另外是使用動態的SQL來執行。語法方面不懂,查閱一下MSDN。

 

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/855/viewspace-2812802/,如需轉載,請註明出處,否則將追究法律責任。

相關文章