在SQL 2日期和LINQ
喜之间选择的数据,我需要选择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;
如果您的字段是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(convert(date,CheckDate)) >= 2010
AND year(convert(date,CheckDate)) <= 2017
这个日期怎么样? 2017/12/18我现在使用你的代码它给了我错误,时间必须是yyyy/MM/dd hh:mm:ss,但是我的日期dosnt有时间。 –
SqlDateTime溢出。必须介于1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间。 –
是的有效日期范围是https://docs.microsoft.com/en-us/sql/t-sql/data-types/datetime-transact-sql –
你也可以这样来做
SELECT * FROM tbl_Check
WHERE StudentId = 9
AND (YEAR(CheckDate) BETWEEN 2010 AND 2017)
除非你有一个很好的理由这样做,你不应该存储日期为字符串。 –