Выберите данные между 2 Дата в sql и linq

Привет мне нужно выбрать некоторые данные между 2 дата, я могу сделать это легко с SQL-запросом, как это:
SELECT * FROM tbl_Check WHERE StudentId = 9 AND CheckDate >= 2010 AND CheckDate <= 2017


Примечание. Тип CheckDate в таблице Sql: NVARCHAR(12).

теперь я хочу использовать этот запрос в linq я написал этот, но я получаю ошибку, что оператор>= не может применяться к операнду типа строка и строка.

from val in dc.CheckVs
            where val.StudentId == 9 &&
                  val.CheckDate >= txtDate1.Text &&
                  val.CheckDate <= txtDate2.Text
                  select val;


3 ответа

Решение

Если вы поле NVARCHAR(12) но значение только YEAR Вы можете конвертировать столбцы в INT,

Попробуй это.

from val in dc.CheckVs
where val.StudentId == 9 &&
      Convert.ToInt32(val.CheckDate.Tostring()) >= Convert.ToInt32(txtDate1.Text) &&
      Convert.ToInt32(val.CheckDate.Tostring()) <= Convert.ToInt32(txtDate2.Text)
select val;

Я жду, что это поможет вам;)

Вы также можете сделать это так

SELECT * FROM  tbl_Check
  WHERE StudentId = 9
  AND (YEAR(CheckDate) BETWEEN 2010 AND 2017)

Вам может потребоваться преобразовать в date и использовать функцию year(), чтобы проверить это, как показано ниже:

SELECT * FROM  tbl_Check
  WHERE StudentId = 9
  AND year(convert(date,CheckDate)) >= 2010
  AND year(convert(date,CheckDate)) <= 2017
Другие вопросы по тегам