簡體   English   中英

SQL存儲過程的where子句中的日期比較

[英]Date comparison in where clause of sql stored procedure

請任何人告訴我如何在sql存儲過程的where子句中進行日期比較。

我為用戶提供了一個文本框過濾器,用戶可以在其中輸入任何格式的日期(例如13/09 / 2013、13092013、13-Sep-2013、130913)。 數據庫表具有要將此過濾器應用於的datetime類型列。

在這里我有3個問題

  1. 我是否必須先將其轉換為僅在特定日期輸入C#代碼。 如果是,日期格式是否重要?
  2. 如何檢查日期類型參數是否為null或為空?
  3. 如何將上述僅日期類型(來自C#代碼)與數據庫表的datetime列進行比較?

一個代碼示例將不勝感激。

親切的問候

回答:

(1)。 您應強制用戶輸入“某些格式”。 如果您不知道輸入格式,怎么知道是12-11-2013 11月12日還是12月11日? 這只是一個例子。

如果您知道用戶輸入的格式,則可以將其轉換為代碼中的日期,也可以將其作為ISO FORMAT( yyyymmdd )中的字符串傳遞給存儲過程。

第一種方法會更好,因為如果用戶輸入的日期無效,則可以停止調用存儲過程。

(2)。 您后面的代碼將用戶輸入作為字符串接收。 因此,您可以在like后面的代碼中對其進行檢查;

 bool isNull = string.IsNullOrWhiteSpace(userEnteredDate);

(3)。 在您的存儲過程中

 --Rest of the query
 WHERE Convert(date, yourdateColumn) = @yourDateParameter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM