198 votes

Décompte des jours de travail entre deux dates

Comment puis-je calculer le nombre de jours ouvrables entre deux dates en SQL Server ?

Lundi au vendredi et il doit s’agir de T-SQL.

346voto

CMS Points 315406

Pour les journées de travail, lundi au vendredi, vous pouvez le faire avec une seule instruction SELECT, comme ceci :

Si vous souhaitez inclure les jours fériés, il faut s’en sortir un peu...

44voto

Bogdan Maxim Points 2365

Calcul des jours de travail, vous pouvez trouver un bon article sur ce sujet, mais comme vous pouvez le voir il est pas si avancé.

Si vous avez besoin d’utiliser un calendrier personnalisé, vous devrez peut-être ajouter quelques vérifications et certains paramètres. Si tout va bien, il fournira un bon point de départ.

31voto

Dan B Points 402

Tout le crédit à Bogdan Maxim & Peter Mortensen. Il s’agit de leur post, je viens d’ajouter vacances à la fonction (ce qui suppose que la table « tblHolidays » avec un champ datetime « HolDate ».

10voto

Carter Cole Points 523

Ma version de la réponse acceptée en fonction à l’aide de DATEPART, donc je n’ai pas à faire une comparaison de chaînes sur la ligne avec

DATENAME (dw, @StartDate) = « Dimanche »

Bref, voilà ma fonction datediff SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON GO

5voto

phareim Points 251

(Je suis quelques points timide de commenter privilèges)

Si vous décidez de renoncer à l' +1 jour en CMS solution élégante, notez que si votre date de début et date de fin sont dans le même week-end, vous obtenez une réponse négative. C'est à dire., 2008/10/26 à 2008/10/26 retourne -1.

ma solution simpliste:

select @Result = (..CMS's answer..)
if  (@Result < 0)
        select @Result = 0
    RETURN @Result

.. qui définit également toutes erronée des postes avec une date de début après la date de fin de zéro. Quelque chose que vous peut ou peut ne pas être à la recherche pour.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X