2017-06-02 46 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)