SQL数据不显示某些日期范围的数据

时间:2016-04-04 09:49:02

标签: sql-server tsql date

当我更改变量中的日期时,我在查询中显示日期时出现了一些问题,下面是我声明的内容。

declare @record int;
declare @start_date date;
declare @end_date date;

set @record = 2;
set @start_date =   '2016-03-01';
set @end_date =     '2016-03-31';

我创建的是临时表,按日期范围填充我的数据。日期设置如下

 - Daily 2016-01-15 
- weekly 2016-51 
- Monthly 2016-04 
- Quarterly 2016-01
- Yearly 2016

因此,当我宣布上述日期并按年度过滤时,我应该收回数据,事实上,不管我每年投入的日期,我都应该得到结果,但没有任何结果出现。

当我声明开始日期= 2016-01-01时,它返回我过滤的所有内容的数据。

任何人都可以就解决这个问题的方法提出一些建议我不知道。

1 个答案:

答案 0 :(得分:0)

我不知道你的查询是什么不起作用,但基本的isead应该是这样的:

select * from YourTempTable where datepart (yy, DateField) = datepart(yy, @start_date)

当然,这对大表来说不是最佳的,因为它不会使用任何索引。

最好根据您要查找的时间段和上述参考日期构建@DateFrom和@DateTo变量,并相应地进行选择:

select * from YourTempTable where DateField between = @DateFrom and @DateTo