2012-11-08 36 views
1

我工作的一個Telerik的GridView和我應該顯示在一定條件下和其中1的警告是:SQL的時間差問題

如果到期日是於今天的日期做大也警告的日子3,那麼它會顯示所有到期日期比今天更長的記錄,但只有當它們出現警告期時纔會顯示。

所以如果今天的日期是22-12-2012和到期日期爲25-12-2012,並警告天3那麼就應該選擇該記錄

我試過到目前爲止:

DateTime dtTodayDate = DateTime.Today; 
    string strTodayDate = dtTodayDate.ToString("yyyy/MM/dd 00:00:00"); 
    strFilter += @"OR ([DueDate] >= #" + strTodayDate + @"# AND [Warn_Days] > 0 AND [DueDate] - [Warn_Days] =#" + strTodayDate + @"#)"; 

無法對System.DateTime和System.Int32執行' - '操作。

+0

我不知道你的數據來自哪裏,但我會考慮計算一個「警告日期」或甚至是一個「警告指示器」字段,然後再將數據發送到網格,以便您的過濾邏輯可以簡單一點。 –

回答

2

您正在使用錯誤的分隔符,#由Access使用。對於SQL Server,只傳遞日期爲常規字符串:

strFilter += @"OR ([DueDate] >= '" + strTodayDate + @"' AND [Warn_Days] > 0 AND [DueDate] - [Warn_Days] ='" + strTodayDate + @"')"; 

但是,你應該使用參數化查詢,而不是,有一個很好的機會,你會傳遞一個明確的字符串在某一點,而不是讓你的日期值認爲你越來越。

+0

無法對System.DateTime和System.Int32執行' - '操作。警告日子是一個整數。 – Developer

+0

@Developer應該在工作中,請在執行完整個查詢後發佈。 – RedFilter