GetDate()的函数Year和MONTH;

时间:2013-10-08 07:50:31

标签: sql select time where getdate

你可以帮助我解决我的问题吗?所以我有问题,我必须搜索一些数据一段时间,但evertime返回我不同的价值。

// 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

你能告诉我为什么它会让我在几个月内比一年后更有价值

1 个答案:

答案 0 :(得分:1)

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

请使用以下代码自行查看:

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

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

相关问题