据我所知,下面的两个查询应该会产生相同的结果,但它们实际上产生的数字相差很大。为什么“间隔”日期与指定日期的月份和年份不一样?是什么导致了这一切?
SELECT [Account]
, SUM([Amount]) AS [Amount]
FROM [Table]
WHERE [Account] = 'Specific Account'
AND Month([Date]) = 5
AND Year([Date]) = 2015
GROUP BY [Account]总数:-1,500,000
SELECT [Account]
, SUM([Amount]) AS [Amount]
FROM [Table]
WHERE [Account] = 'Specific Account'
AND [Date] BETWEEN '2015-05-01' AND '2015-05-31'
GROUP BY [Account]总数:350 000
我需要第一个是正确的,因为我需要按月份和年份对结果进行分组,使用第二个查询会很麻烦。
我最终需要的查询:
SELECT [Account]
, Month([Date]) AS [Month]
, Year([Date]) AS [Year]
, SUM([Amount]) AS [Amount]
FROM [Table]
GROUP BY [Account]
, Month([Date])
, Year([Date]) 发布于 2015-07-28 17:34:38
[Date] BETWEEN '2015-05-01' AND '2015-05-31'将只包括时间组件为午夜的第31行,并省略一天的其余时间。
您应该忘记BETWEEN,因为没有一个有效的字符串文本可以放在正确的位置上,用于datetime、smalldatetime、datetime2(0)..datetime2(7)和use。
WHERE [Date] >= '2015-05-01' AND [Date] < '2015-06-01'发布于 2015-07-28 17:13:18
在下面的第一个例子中,您将得到更多的行。
AND (Month([Date]) = 5 AND Year([Date]) = 2015)而不是
AND Month([Date]) = 5 AND Year([Date]) = 2015==Update==
我建议使用转换函数。您应该修改您的查询如下
CONVERT(varchar(10),DATE_COLUMN,112) between '20150501' and '20150531'https://stackoverflow.com/questions/31682780
复制相似问题