Привет У меня есть этот код, который я пытаюсь исправить, вопрос в том, что, когда я прохожу параметр в том же году сказатьзапрос не возвращает правильные записи
startDate = 01/01/2011 EndDate 07/01/2011
Он работает возвращает правильные данные, кроме проблема, когда я пытаюсь использовать его с другим годом, скажет
startDate = 02/01/2011 EndDate 01/25/2012
--(wont work shows blank all thought there is data in both years).
Вот мой код SQL
ALTER PROCEDURE [dbo].[GetOrderByDateRange]
@startDate nvarchar(50),
@endDate nvarchar(50)
AS
BEGIN
DECLARE @days varchar(100)
set @days = DATEDIFF(d, @StartDate, DATEADD(day,+1,@EndDate))
SELECT distinct(CONVERT(char(10), OrdDate, 101)) as OrdDate,
COUNT(PurchaseId) as OrdCount,
SUM(Total) as OrdTotals,
AVG(Total) as AvgOrdAmount,
SUM(SubTotal) as Net,
@days as 'Days'
FROM [PurchaseOrders]
WHERE CONVERT(char(10), OrdDate, 101) >= @startDate
AND CONVERT(char(10), OrdDate, 101) <= @endDate
GROUP BY CONVERT(char(10), OrdDate, 101)
END
GO
Возможно, БД содержит только данные за январь-2011? Пожалуйста, покажите несколько строк, возвращенных для прежних параметров, о которых вы упомянули. Также вы делаете 4-кратное преобразование даты в одном запросе, а не в оптимальном – sll
Почему вы не используете DATETIME в качестве своих типов данных? – flayto
У него есть данные за все месяцы .., он работает с 1 января по 31 декабря того же года или любой даты, пока они находятся в том же году .. проблема заключается в том, когда вы говорите 11/01/2011 - 02/02/2012 – user710502