如何在接下来的5天内查询数据库中的行

时间:2018-02-06 10:56:47

标签: sql sql-server

如何在SQL Server中进行查询以查询接下来5天的所有行。 问题是,它必须是有记录的日子,所以接下来的5天,可能会变成像今天,明天,下个月的某一天等......

基本上我想在数据库中查询下一个非空X天的记录。

该表有一个名为Date的列,这是我想要过滤的。

5 个答案:

答案 0 :(得分:0)

为什么不将搜索分成2个查询。第一个搜索日期部分,第二个使用该结果搜索第一个查询返回的日期中的记录。

答案 1 :(得分:0)

试试这个:

DT_CY

答案 2 :(得分:0)

@Anagha很接近,只需稍作修改即可。

SELECT *
FROM TABLE
WHERE DATE IN (
        SELECT DISTINCT TOP 5 DATE
        FROM TABLE
        WHERE DATE >= referenceDate
        ORDER BY DATE
        )

答案 3 :(得分:0)

您可以使用以下SQL查询,首先获取5个不同的日期,然后显示所选日期的所有行

declare @n int = 5;
select *
from myData 
where 
    datecol in (
    SELECT distinct top (@n) cast(datecol as date) as datecol
    FROM myData
    WHERE datecol >= '20180101'
    ORDER BY datecol
)

答案 4 :(得分:0)

如果您的值是日期,则可以使用`dense_rank():

select t.*
from (select t.*, dense_rank() over (order by datecol) as seqnum
      from t
      where datecol >= cast(getdate() as date)
     ) t
where seqnum <= 5;

如果列中包含时间组件,并且您仍希望在午夜至午夜之间定义天数(如问题所示),则只需转换为date

select t.*
from (select t.*,
             dense_rank() over (order by cast(datetimecol as date)) as seqnum
      from t
      where datetimecol >= cast(getdate() as date)
     ) t
where seqnum <= 5;