-2

嗨,我需要在 2 个日期之间选择一些数据,我可以使用这样的 sql 查询轻松地做到这一点:
SELECT * FROM tbl_Check WHERE StudentId = 9 AND CheckDate >= 2010 AND CheckDate <= 2017


注意:Sql Table 中的 CheckDate 类型为:NVARCHAR(12)

现在我想在 linq 中使用这个查询我写了这个但是我得到错误操作符 >= 不能应用于字符串和字符串类型的操作数。

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


4

3 回答 3

1

您可能需要转换为日期并使用 year() 函数进行检查,如下所示:

SELECT * FROM  tbl_Check
  WHERE StudentId = 9
  AND year(convert(date,CheckDate)) >= 2010
  AND year(convert(date,CheckDate)) <= 2017
于 2017-06-02T10:25:22.063 回答
1

如果您的字段是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;

我等着这对你有帮助;)

于 2017-06-02T11:49:56.203 回答
1

你也可以这样做

SELECT * FROM  tbl_Check
  WHERE StudentId = 9
  AND (YEAR(CheckDate) BETWEEN 2010 AND 2017)
于 2017-06-02T10:37:53.793 回答