SQL Datepart, где пункт не работает - PullRequest
3 голосов
/ 10 мая 2011

У меня проблема с завершением сложного запроса:

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, что она возвращает результаты только за месяц, указанный в указанном году.

1 Ответ

4 голосов
/ 10 мая 2011

Спецификатор 'y' - это день года, а не год. Вместо этого попробуйте «yy» или «yyyy».

...