你好,我有這樣的代碼,我試圖解決的問題是,當我通過在同一年度內的參數說查詢沒有返回正確的記錄
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
也許DB只包含2011年1月的數據?請爲您提到的以前的參數顯示幾行返回的行。此外,您正在單個查詢中進行4次日期時間轉換,而不是最佳 – sll 2012-02-14 15:25:10
爲什麼不使用DATETIME作爲數據類型? – flayto 2012-02-14 15:27:06
它擁有所有月份的數據..,它可以在同一年或任何日期的1月1日至12月31日運行,只要它們在同一年..問題是在說什麼時11/01/2011 - 02/02/2012 – user710502 2012-02-14 15:27:27