在項目開發過程中,我們經常要做一些以時間為條件的查詢,比如查詢指定時間範圍内的曆史記錄,然而這些時間都是從UI傳遞過來的參數,是以我們寫的sql語句就必須用到字元串拼接。當然,在C#中寫SQL語句還好處理,可以使用C#的字元串函數做對應的資料類型轉換。但是,如果用的是存儲過程的話,就有點糾結了。下面來說一下我在寫存儲過程中遇到的問題:
為了更加直接的說明問題,寫如下一個簡單的例子:
這個時候,執行SQL的話,就會出現如下錯誤:

分析原因,主要是因為@dateFrom資料類型為Datetime,和字元串連接配接時類型不比對,是以下面就來做類型轉換:
SQL Server中有個Convert函數,可以用來做類型轉換,用法如下:
CONVERT() 函數是把日期轉換為新資料類型的通用函數。
CONVERT() 函數可以用不同的格式顯示日期/時間資料。
下面的腳本使用 CONVERT() 函數來顯示不同的格式。我們将使用 GETDATE() 函數來獲得目前的日期/時間:
結果類似:
這個時候,執行,就可以查詢出結果了。兩種拼接方法,注釋掉的使用了兩個條件來限定時間範圍,後一種方法用的是between...and方法。