2013-09-13 2 views
1

Может ли кто-нибудь сказать мне, как я могу провести сравнение даты в where, где хранится процедура sql.Сравнение даты в том, где статья хранимой процедуры sql

У меня есть фильтр текстового поля для пользователя, в котором пользователь может ввести дату в любом формате (например, 13/09/2013, 13092013, 13-Sep-2013, 130913). Таблица DB имеет столбец типа datetime, на который я хочу применить этот фильтр.

Здесь у меня есть 3 вопроса

  1. ли я, чтобы преобразовать его в какой-то определенный день только ввести свой код C# первый. ЕСЛИ да, чем имеет формат даты?
  2. Как проверить, не является ли параметр типа даты не пустым или пустым?
  3. Как я могу сравнить указанный выше тип даты (из кода C#) с столбцом datetime моей таблицы БД?

Пример кода действительно будет оценен.

С наилучшими пожеланиями

+0

Я поставил условие IF, как следовать IF (NULLIF (@CompanyName, '') IS NULL AND NULLIF (@DateOfEnquiry, '') IS NULL) теперь я должен применить дату comparason в том месте. Здесь я не уверен, правилен ли мой оператор IF, как получить часть даты только из @DateOfEnquiry и моей таблицы.DateOfEnquiry и применить к ней сравнение. –

+0

Это условие IF выглядит странно: NULLIF-проверка на @CompanyName заменяет любой NULL в пределах эта переменная с '', так что никогда не может быть NULL. После этого «IS NULL». Итак, вы проверяете, что-то ISUL, которое никогда не может быть NULL. Та же проблема с DateOfEnquiry. Я думаю, что это не поможет с любым требованием ... –

ответ

2

Ответы:

(1). Вы должны заставить пользователя войти в ОТКРЫТЫЙ ФОРМАТ. Если вы не знаете формат ввода, откуда вы знаете, 12-11-2013 12 ноября или 11 декабря? Это всего лишь один пример.

Если вы знаете, что пользователь вводит формат, вы можете либо преобразовать его в дату в коде, либо передать в виде строки в ISO FORMAT (yyyymmdd) в хранимую процедуру.

Первый метод будет лучше, как если бы пользовательский ввод не был действительной датой, и вы могли бы прекратить вызов хранимой процедуры.

(2). Ваш код позади получает ввод пользователя как строку. Таким образом, вы можете проверить его в коде, как;

bool isNull = string.IsNullOrWhiteSpace(userEnteredDate); 

(3). в хранимой процедуре

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

Большое спасибо Kaf за подробное объяснение. Я действительно ценю твою помощь. Вы действительно облегчили мне жизнь. –

Смежные вопросы