我有一個複雜的查詢結束一個問題:SQL日期部分Where子句不工作
SQLString = "SELECT i.CONCOM,
COALESCE(SUM(CASE
WHEN C.CATEGORY_ID = '30' THEN 0
ELSE t.LOGMINS END), 0) AS TotalWithoutNew,
COALESCE(SUM(t.LOGMINS), 0) AS TotalAllId
FROM Inquiry AS i
INNER JOIN TIMELOG AS t ON t.INQUIRY_ID = i.INQUIRY_ID
INNER JOIN PROD AS P ON i.PROD_ID = P.PROD_ID
INNER JOIN CATEGORY AS C ON P.CATEGORY_ID = C.CATEGORY_ID
WHERE (DATEPART(m, ESCDATE) = " & objmonth & ")
AND (DATEPART(y, ESCDATE) = " & objyear & ")
GROUP BY i.CONCOM
ORDER BY concom ASC"
的查詢工作正常,而不當我把where子句中它沒有返回值的where子句,但。 ESCDATE
是DATETIME字段。我首先想到的不是將整數傳遞給它,而是字符串,它絕對是通過整數。
在ASP腳本中,我使用Request.Querystring
來獲得一個月和一年,而我基本上希望檢查ESC日期,它僅從指定年份中指定的月份返回結果。
如果在ESCDATE上有索引,使用DATEPART將無法使用它。 – 2011-05-09 23:42:37
您應該使用參數化查詢。如果直接從Request.Querystring中取這些值並將它們連接到查詢中,您將會遇到SQL注入問題。 – 2011-05-09 23:43:47
爲了加強@ martin的評論,sql注入問題是一件大事,你不應該忽視它。 – 2011-11-21 02:40:18