-1

请问你能帮我解决我的问题吗?所以我有一个问题,我必须搜索一些数据一段时间,但每次都会给我返回不同的值。

// This return me 10k values
YEAR(pol.datum) >= YEAR(GETDATE()) - 1 and YEAR(pol.datum) <= YEAR(GETDATE())

// This return me 14k values 
YEAR(pol.datum) = YEAR(GETDATE()) and MONTH(pol.datum) <= MONTH(GETDATE()) - 1 and MONTH(pol.datum) >= MONTH(GETDATE()) - 7

// this return me 16k value
YEAR(pol.datum) = YEAR(GETDATE()) and MONTH(pol.datum) >= MONTH(GETDATE()) - 4 and MONTH(pol.datum) <= MONTH(GETDATE()) - 1

你能告诉我为什么它在几个月内给我带来的价值比一年之后更多吗

4

1 回答 1

2

将此作为答案发布,因为评论中没有足够的空间
您应该发布整个查询,因为当前语句应该产生更多结果,而对您来说它们返回的结果更少。

尝试使用以下代码亲自查看:

declare @test Datetime;
select @test = '2013-1-04';

select 1
where YEAR(@test) > YEAR(GETDATE()) - 1 
and YEAR(@test) <= YEAR(GETDATE())

select 1
where YEAR(@test) = YEAR(GETDATE()) 
and MONTH(@test) <= MONTH(GETDATE()) - 1 
and MONTH(@test) >= MONTH(GETDATE()) - 7

select 1
where YEAR(@test) = YEAR(GETDATE()) 
and MONTH(@test) >= MONTH(GETDATE()) - 4 
and MONTH(@test) <= MONTH(GETDATE()) - 1

更改为 test 的值,您将找不到触发第二个或第三个而不触发第一个的值。
总之:发布您的整个查询:)

于 2013-10-08T08:14:17.370 回答