Requête SQL Server pour get le deuxième jeudi d'un mois

Comment get le deuxième jeudi d'un mois dans SQL Server?

Par exemple:

  • Si le mois est juin 2016, j'ai besoin de la date du 06/9/2016
  • Si le mois de juillet 2016, je dois get la date 07/14/2016

  SELECT DATEADD(DAY, (DATEDIFF(DAY, 3, DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0)) / 7) * 7 + 14, 3) AS NextDay 

Remplacez GETDATE () par ce que vous voulez, il renverra le premier jour de votre date fournie.

simple créer une fonction et passer la date pour get le désir jeudi date

 CREATE FUNCTION Get2nd_ThursDay(@CurrentDate DATETIME) RETURNS DATETIME AS BEGIN DECLARE @NextThursday DATETIME SELECT @NextThursday = DATEADD(DAY, (DATEDIFF(DAY, 3, DATEADD(MONTH, DATEDIFF(MONTH, 0, @CurrentDate), 0)) / 7) * 7 + 14, 3) RETURN @NextThursday END 

puis utiliser dans la requête en tant que

 SELECT dbo.Get2nd_ThursDay(getdate()) 

Vous pouvez utiliser la fonction suivante:

 CREATE FUNCTION fn_DayOfMonth ( @date datetime, @day [int], @num int ) RETURNS datetime AS BEGIN DECLARE @desiredDate as datetime; DECLARE @firstDate as datetime; SELECT @firstDate = DATEADD(month, DATEDIFF(month, 0, @date), 0); SELECT @desiredDate = DATEADD(DAY, ( ( (7 * @num + @day) - DATEPART(dw, @firstDate) ) % 7 ) + 7, @firstDate); RETURN @desiredDate; END GO 

Et utilisez-le comme suit:

 SELECT [dbo].[fn_DayOfMonth]('2016-06-09', 5, 2) 

Quel premier argument est la date d'input, le second est le jour de la semaine (1 pour dimanche et 7 pour samedi) et le dernier argument est l'occurrence.