1

谁能告诉我如何在 sql 存储过程的 where 子句中进行日期比较。

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

在这里我有3个问题

  1. 我是否必须先将其转换为仅在我的 c# 代码中输入的特定日期。如果是,那么日期格式是否重要?
  2. 如何检查日期类型参数是否不为空或为空?
  3. 我将如何将上述仅日期类型(来自 c# 代码)与我的数据库表的 datetime 列进行比较?

一个代码示例将不胜感激。

亲切的问候

4

1 回答 1

2

答案:

(1)。您应该强制用户输入特定格式。如果不知道输入格式,怎么知道12-11-2013是 11 月 12 日还是 12 月 11 日?这只是一个例子。

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

第一种方法会更好,因为如果用户输入不是有效日期,那么您可以停止调用存储过程。

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

 bool isNull = string.IsNullOrWhiteSpace(userEnteredDate);

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

 --Rest of the query
 WHERE Convert(date, yourdateColumn) = @yourDateParameter
于 2013-09-13T13:52:39.727 回答