| 
                
                    | 
                            
                                | Author | Topic |  
                                    | jobsingerStarting Member
 
 
                                        2 Posts | 
                                            
                                            |  Posted - 2014-11-18 : 20:50:29 
 |  
                                            | Hi - I'm new here.I have a given date and I would like to get the biweekly end date.Biweekly periods run from Sunday to Saturday.For example:My date is 01/03/2014Should return biweekly end date as 01/04/2014My date is 01/06/2014Should return biweekly end date as 01/18/2014I figured out how to get the week ending date, but can't get it to do a biweekly date.TO GET WEEK END DATE: dateadd(day, -1 * datepart(weekday, My date here) + 7 WEEKEND_DATEAny help is much appreciated!Thank you. |  |  
                                    | stepsonAged Yak Warrior
 
 
                                    545 Posts | 
                                        
                                          |  Posted - 2014-11-19 : 01:20:09 
 |  
                                          | Hi,My first idee is this: declare @dDate1 as DATE = '20140103'		,@dDate2 as DATE ='20140106'		,@dDate AS DATESET @dDate = @dDate1SELECT		CASE WHEN DATEPART(wk,@dDate) % 2 = 0 THEN DATEADD(d,5,DATEADD(wk,1,DATEADD(wk,DATEDIFF(wk,0,@dDate),0))) 	ELSE DATEADD(d,5,DATEADD(wk,DATEDIFF(wk,0,@dDate),0)) ENDsabinWeb MCP |  
                                          |  |  |  
                                    | stepsonAged Yak Warrior
 
 
                                    545 Posts | 
                                        
                                          |  Posted - 2014-11-19 : 01:25:55 
 |  
                                          | You can have a calendar table and have an additional column <biWeeklyDate> - and base on your given date to extract the desired value Or create a scalar function  that return the desired value ;WITH aCTEAS(		SELECT CAST('20140101'AS DATETIME) AS myDate ,CAST('20140104' AS DATETIME) AS biWeeklyDate	UNION ALL	SELECT 		DATEADD(d,1,myDate), CASE WHEN DATEPART(wk,myDate) % 2 = 0 THEN DATEADD(d,5,DATEADD(wk,1,DATEADD(wk,DATEDIFF(wk,0,myDate),0))) 								ELSE DATEADD(d,5,DATEADD(wk,DATEDIFF(wk,0,myDate),0)) END	FROM		aCTE	WHERE 		myDate<'20140131')SELECT * FROM aCTEsabinWeb MCP |  
                                          |  |  |  
                                    | jobsingerStarting Member
 
 
                                    2 Posts | 
                                        
                                          |  Posted - 2014-11-19 : 18:09:12 
 |  
                                          | Thank you these were very helpful! |  
                                          |  |  |  
                                    | ScottPletcherAged Yak Warrior
 
 
                                    550 Posts | 
                                        
                                          |  Posted - 2014-11-20 : 12:19:39 
 |  
                                          | I'd strongly suggest avoiding any code with dependencies on @@DATEFIRST and/or language settings.How about the code below instead, which works with any date/language settings.  Btw, "5" is not a "magic" date, it's simply a known, earlier Saturday (Jan 6 1900) that serves as a "base" date for calcs. SELECT    my_date,         DATEADD(DAY, CEILING(DATEDIFF(DAY, 5, my_date) / 14.0) * 14, 5) AS ending_pay_dateFROM (    SELECT CAST('01/03/2014' AS datetime) AS my_date UNION ALL    SELECT '01/04/2014' UNION ALL    SELECT '01/06/2014' UNION ALL    SELECT '01/18/2014' UNION ALL    SELECT '01/19/2014'    ) AS my_dates |  
                                          |  |  |  
                                |  |  |  |