sql存储过程的where子句中的日期比较

时间:2013-09-13 13:35:24

标签: c# tsql stored-procedures

可以请任何人告诉我如何在sql存储过程的where子句中进行日期比较。

我向用户提供了一个文本框过滤器,用户可以以任何格式输入日期(例如13/09 / 2013,13092013,13-Sep-2013,130913)。数据库表具有日期时间类型列,我想在其上应用此过滤器。

这里我有3个问题

  1. 我是否必须先将其转换为某个特定日期才能在我的c#代码中输入。如果是,那么日期格式是否重要?
  2. 如何检查日期类型参数是否为空或空?
  3. 我如何将上述日期类型(来自c#代码)与我的数据库表的日期时间列进行比较?
  4. 我们非常感谢代码示例。

    亲切的问候

1 个答案:

答案 0 :(得分:2)

数目:

(1)。您应该强制用户输入某些格式。如果您不知道输入格式,您如何知道11月12日或12月11日12-11-2013?这只是一个例子。

如果您知道用户输入格式,您可以将其转换为代码中的日期,或者将ISO FORMAT(yyyymmdd)中的字符串作为字符串传递到存储过程中。

第一种方法会更好,就好像用户输入不是有效日期那么你可以停止调用存储过程。

(2)。您的代码后面的用户输入作为字符串。所以你可以在后面的代码中查看它;

 bool isNull = string.IsNullOrWhiteSpace(userEnteredDate);

(3)。在您的存储过程中

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