Sql server 2012 根据工资周期查找季度月份

Sql server 2012 根据工资周期查找季度月份,sql-server-2012,Sql Server 2012,这将出现在“where”条款中……如何根据工资周期查找季度?我们的工资周期从季度月25日开始,到季度月10日结束。例如 第二季度从2016年4月25日开始,到2016年7月10日结束。好的,很难完全理解你在做什么,但这里有一些应该有效的方法。你可以根据你的要求编辑日期,但我是根据你所说的来做的 --This is just test data... you can use your own table IF OBJECT_ID('tempdb..#payroll') IS NOT NULL DR

这将出现在“where”条款中……如何根据工资周期查找季度?我们的工资周期从季度月25日开始,到季度月10日结束。例如
第二季度从2016年4月25日开始,到2016年7月10日结束。

好的,很难完全理解你在做什么,但这里有一些应该有效的方法。你可以根据你的要求编辑日期,但我是根据你所说的来做的

--This is just test data... you can use your own table
IF OBJECT_ID('tempdb..#payroll') IS NOT NULL DROP TABLE #payroll

CREATE TABLE #payroll (dates date)

INSERT INTO #payroll (dates) VALUES
('1/1/2016'),
('1/16/2016'),
('2/4/2016'),
('3/3/2016'),
('3/19/2016'),
('4/18/2016'),
('5/6/2016'),
('6/4/2016'),
('6/29/2016'),
('7/4/2016'),
('7/31/2016'),
('8/9/2016'),
('9/1/2016'),
('10/3/2016'),
('10/19/0216'),
('11/4/2016'),
('11/21/2016'),
('12/2/2016'),
('1/1/2016'),
('1/8/2017'),
('1/21/2017')


--variable for what ever quarter you want to limit on. 1-4
declare @Quarter int
set @Quarter = 4


--Year that you are focused on. If left to NULL it uses the current year
declare @Year int
set @Year = NULL

IF @Year IS NULL 
    BEGIN 
        SET @Year = Year(GETDATE())
    END

--Date parameters that we will use to filter
declare @startDate date = null
declare @endDate date = null

--logic to set your quarters
set @startDate = case
                    when @Quarter = 1 then '1/25/' + CAST(@Year as varchar(4))
                    when @Quarter = 2 then '4/25/' + CAST(@Year as varchar(4))
                    when @Quarter = 3 then '7/25/' + CAST(@Year as varchar(4))
                    when @Quarter = 4 then '9/25/' + CAST(@Year as varchar(4))
                end 
set @endDate = case 
                    when @Quarter = 1 then '4/10/' + CAST(@Year as varchar(4))
                    when @Quarter = 2 then '7/10/' + CAST(@Year as varchar(4))
                    when @Quarter = 3 then '9/10/' + CAST(@Year as varchar(4))
                    when @Quarter = 4 then '1/10/' + CAST((@Year + 1)as varchar(4))
                end 


--run it to test results
select *
from #payroll
where dates between @startDate and @endDate

好吧,很难完全理解你在做什么,但这里有一些应该有用的东西。你可以根据你的要求编辑日期,但我是根据你所说的来做的

--This is just test data... you can use your own table
IF OBJECT_ID('tempdb..#payroll') IS NOT NULL DROP TABLE #payroll

CREATE TABLE #payroll (dates date)

INSERT INTO #payroll (dates) VALUES
('1/1/2016'),
('1/16/2016'),
('2/4/2016'),
('3/3/2016'),
('3/19/2016'),
('4/18/2016'),
('5/6/2016'),
('6/4/2016'),
('6/29/2016'),
('7/4/2016'),
('7/31/2016'),
('8/9/2016'),
('9/1/2016'),
('10/3/2016'),
('10/19/0216'),
('11/4/2016'),
('11/21/2016'),
('12/2/2016'),
('1/1/2016'),
('1/8/2017'),
('1/21/2017')


--variable for what ever quarter you want to limit on. 1-4
declare @Quarter int
set @Quarter = 4


--Year that you are focused on. If left to NULL it uses the current year
declare @Year int
set @Year = NULL

IF @Year IS NULL 
    BEGIN 
        SET @Year = Year(GETDATE())
    END

--Date parameters that we will use to filter
declare @startDate date = null
declare @endDate date = null

--logic to set your quarters
set @startDate = case
                    when @Quarter = 1 then '1/25/' + CAST(@Year as varchar(4))
                    when @Quarter = 2 then '4/25/' + CAST(@Year as varchar(4))
                    when @Quarter = 3 then '7/25/' + CAST(@Year as varchar(4))
                    when @Quarter = 4 then '9/25/' + CAST(@Year as varchar(4))
                end 
set @endDate = case 
                    when @Quarter = 1 then '4/10/' + CAST(@Year as varchar(4))
                    when @Quarter = 2 then '7/10/' + CAST(@Year as varchar(4))
                    when @Quarter = 3 then '9/10/' + CAST(@Year as varchar(4))
                    when @Quarter = 4 then '1/10/' + CAST((@Year + 1)as varchar(4))
                end 


--run it to test results
select *
from #payroll
where dates between @startDate and @endDate

你能提供一年内所有季度的开始和结束日期吗?第一季度开始日期是2016年1月25日,结束日期是2016年4月10日;第二季度开始时间为2016年4月25日,结束时间为2016年7月10日;第三季度开始时间为2016年7月25日,结束时间为2016年9月10日;第四季度开始于2016年9月25日结束于2017年1月10日谢谢。为了澄清一下,你们正在试图看到一个给定的发薪日期属于哪个季度,对吗?中间的日期呢?例如,2016年4月20日,我应该更清楚地回答我的问题。我在寻找一个季度内每个人的佣金总额。所以,我在寻找类似于“工资在……和……之间的月份”。从第二季度来看,工资单月份将是月数或“4”。一般来说,25号代表一个月的1号到15号。第十个付款期为16日至30日。因此,看看第二季度,月数将从4开始,以7结束。这些将是11月4日至10月7日的支付期日期。你能给出一年内所有季度的开始和结束日期吗?第一季度开始日期是2016年1月25日,结束日期是2016年4月10日;第二季度开始时间为2016年4月25日,结束时间为2016年7月10日;第三季度开始时间为2016年7月25日,结束时间为2016年9月10日;第四季度开始于2016年9月25日结束于2017年1月10日谢谢。为了澄清一下,你们正在试图看到一个给定的发薪日期属于哪个季度,对吗?中间的日期呢?例如,2016年4月20日,我应该更清楚地回答我的问题。我在寻找一个季度内每个人的佣金总额。所以,我在寻找类似于“工资在……和……之间的月份”。从第二季度来看,工资单月份将是月数或“4”。一般来说,25号代表一个月的1号到15号。第十个付款期为16日至30日。因此,看看第二季度,月数将从4开始,以7结束。这些将是11月4日至10月7日的支付期日期。脖子还陷在泥里。