如何在SQL查询中编写一个日期范围的代码,使其从当前日期向前追溯3周,并从当前日期向前追溯1周。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在SQL查询中编写一个日期范围的代码,使其从当前日期向前追溯3周,并从当前日期向前追溯1周。相关的知识,希望对你有一定的参考价值。

-- 这段代码只提取未来7天内的到期日,忽略了最近21天的到期日--如何在SQL查询中对日期范围进行编码,使其从当前日期往前追溯3周,并从当前日期往前追溯1周。

select top 10  D.VendID as Customer , D.DueDate, sum(CuryTranAmt) as Amount, C.CpnyName Company 
  from APTran A
  left join APDoc D
  on A.RefNbr = D.RefNbr
  inner join [SIVSYS].[dbo].[Company] C
  on D.CpnyID = C.CpnyID

  where 
  A.trantype NOT IN ('CK', 'HC')
  and A.DrCr like 'C'
  and (D.DueDate BETWEEN GETDATE() AND DATEADD(DAY, -21, GETDATE())) OR (D.DueDate BETWEEN GETDATE() AND DATEADD(DAY, +7, GETDATE()))

  and D.DocBal <> '0'

  group by 
  D.VendID
 ,C.CpnyName
 ,D.DueDate
 ,A.CuryTranAmt
 ,D.RefNbr
 ,D.BatNbr
 order by (A.CuryTranAmt) desc
答案

你的第一个条件的界限是 between 倒置:最低界大于上界,所以没有日期能匹配上。

我想,你只是想要。

where d.dueDate 
    between dateadd(day, -21, getdate())
    and dateadd(day, 7, getdate())

有可能,你要的是整个天数,所以。

where 
    d.dueDate >= dateadd(day, -21, cast(getdate() as date))
    and d.dueDate < dateadd(day, 6, cast(getdate() as date))

以上是关于如何在SQL查询中编写一个日期范围的代码,使其从当前日期向前追溯3周,并从当前日期向前追溯1周。的主要内容,如果未能解决你的问题,请参考以下文章

SQL 查询日期范围保存在 2 列中

用于显示多个日期范围之间的间隔的 SQL 查询

如何使用 argparse Python 在 SQL 查询中传递日期范围参数

尽量不在 SQL 查询中硬编码日期范围(Python、SQL 服务器)

SQL 如何查询日期在一定范围内的数据

MariaDB中日期范围和时间范围之间的SQL查询