Comment get le deuxième jeudi d'un mois dans SQL Server?
Par exemple:
06/9/2016
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.