2017-06-02 49 views
-2

喜之间选择的数据,我需要选择2日之间的一些数据,我可以用SQL查询这样很容易做到这一点:
SELECT * FROM tbl_Check WHERE StudentId = 9 AND CheckDate >= 2010 AND CheckDate <= 2017在SQL 2日期和LINQ


注:在SQL表了checkdate类型:NVARCHAR (12)

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

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


+0

除非你有一个很好的理由这样做,你不应该存储日期为字符串。 –

回答

0

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

我等待这个帮助你;)

0

您可能需要转换成日期和使用一年()函数如下检查:

SELECT * FROM tbl_Check 
    WHERE StudentId = 9 
    AND year(convert(date,CheckDate)) >= 2010 
    AND year(convert(date,CheckDate)) <= 2017 
+0

这个日期怎么样? 2017/12/18我现在使用你的代码它给了我错误,时间必须是yyyy/MM/dd hh:mm:ss,但是我的日期dosnt有时间。 –

+0

SqlDateTime溢出。必须介于1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间。 –

+0

是的有效日期范围是https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetime-transact-sql –

0

你也可以这样来做

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