Sql 确定提取日期

Sql 确定提取日期,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个SQL查询,它根据用户可以选择的时间段提取数据,用户可以根据自己需要的日期手动更改日期,是否可以修复这段时间,就像我们提取数据时,我们将有过去三个月的数据来修复过去三个月的数据一样,这是询问是否有人可以帮助我,请: SELECT ROW_NUMBER() OVER (partition by ptf_id ORDER BY sum(isnull([pnr_count],0)) desc) as id ,[coresitecode] ,[sitecod

我有一个SQL查询,它根据用户可以选择的时间段提取数据,用户可以根据自己需要的日期手动更改日期,是否可以修复这段时间,就像我们提取数据时,我们将有过去三个月的数据来修复过去三个月的数据一样,这是询问是否有人可以帮助我,请:

SELECT
      ROW_NUMBER() OVER (partition by ptf_id ORDER BY sum(isnull([pnr_count],0)) desc)  as id
      ,[coresitecode]
      ,[sitecode]
      ,ptf_id 
      ,sum(isnull([pnr_count],0)) TOTAL_PNRs 
      ,sum(isnull([child_pnr_count],0)) TOTAL_child_PNRs into #pnr_by_site_and_platform
  FROM 
    [SWAT_V2_PLL].[rpt].[PNR_per_site_daily] pnr
    inner join ctrl.PTF_Platform ptf on pnr.ptf_id = ptf.uid
  where 
    DAY_id >= 20150701  -- time period you need to consider YYYYMMDD
    and DAY_id <= 20150901  -- end of PERIOD
    and ptf_label in ('AETMEU1EUR', 'AETMEU2EUR', 'AETMAPASIA', 'AETMUSAMER') 
  group by 
    [coresitecode]
     ,[sitecode]
     ,ptf_id
  order by    
    TOTAL_PNRs desc

-- ordered PNRs ....   
select ptf_id, id , coresitecode, sitecode, TOTAL_PNRs
 from  #pnr_by_site_and_platform  order by ptf_id, TOTAL_PNRs desc
选择
(按ptf_id划分,按sum(isnull([pnr_count],0))desc)作为id的行数()
,[coresitecode]
,[网站代码]
,ptf_id
,总和(isnull([pnr\u count],0))总pnr
,求和(isnull([child_pnr_count],0))按站点和平台将子pnr总计为pnr
从…起
[SWAT_V2_PLL].[rpt].[PNR_每个站点每天]PNR
pnr.PTF\u id=PTF.uid上的内部连接ctrl.PTF\u平台PTF
哪里
DayyId>=20150701——需要考虑YYYYMMD的时间段

还有DAY_id我的快速评论

...DAY_id BETWEEN 
     CONVERT(INT,CONVERT(CHAR(8), DATEADD(MONTH, -3, GETDATE()), 112)) AND
     CONVERT(INT,CONVERT(CHAR(8), GETDATE(), 112))
GETDATE()
是今天,
DATEADD
是加-3个月(换句话说,从今天减去3个月。
CONVERT(CHAR(8),…,112)是转换为
YYYYMMDD
,最后
CONVERT(INT,…)`是将字符串转换为整数

转换文档:

这个问题有一些关于计算前一周/月的第一天/最后一天等的详细信息


关于我的快速评论

...DAY_id BETWEEN 
     CONVERT(INT,CONVERT(CHAR(8), DATEADD(MONTH, -3, GETDATE()), 112)) AND
     CONVERT(INT,CONVERT(CHAR(8), GETDATE(), 112))
GETDATE()
是今天,
DATEADD
是加-3个月(换句话说,从今天减去3个月。
CONVERT(CHAR(8),…,112)是转换为
YYYYMMDD
,最后
CONVERT(INT,…)`是将字符串转换为整数

转换文档:

这个问题有一些关于计算前一周/月的第一天/最后一天等的详细信息


假设
DAY\u id
是一个
INT
那么在转换(INT,CONVERT(CHAR(8),DATEADD(MONTH,-3,GETDATE()),112))和转换(INT,CONVERT(CHAR(8),GETDATE(),112))之间类似
DAY\u id
是的,它是一个整数,谢谢你的帮助,但是如果我想改变周期,我应该只改变-3、@mateos-你是对的,你需要改变参数(在-3的位置)来改变周期假设
DAY\u id
是一个
INT
然后类似于
DAY\u id的东西(INT,CONVERT(CHAR(8),DATEADD(MONTH,-3,GETDATE()),112))和CONVERT(INT,CONVERT(CHAR(8),GETDATE(),112))
是的,它是一个INT,谢谢你的帮助,但是如果我想计算周期,我应该只更改,-3、@mateos-你是对的,你需要更改参数(在-3的位置)改期