Comment exclure les jours de week-end dans une requête SQL Server?
-
05-07-2019 - |
Question
Comment exclure les valeurs d'une colonne DateTime
qui sont le samedi ou le dimanche?
Par exemple, en fonction des données suivantes:
date_created
'2009-11-26 09:00:00' -- Thursday
'2009-11-27 09:00:00' -- Friday
'2009-11-28 09:00:00' -- Saturday
'2009-11-29 09:00:00' -- Sunday
'2009-11-30 09:00:00' -- Monday
voici le résultat que je recherche:
date_created
'2009-11-26 09:00:00' -- Thursday
'2009-11-27 09:00:00' -- Friday
'2009-11-30 09:00:00' -- Monday
Merci!
La solution
Lorsque vous utilisez des calculs de jour de la semaine, il est important de prendre en compte l'actuel DATEFIRST
paramètres. Cette requête exclut toujours correctement les week-ends, à l'aide de @@ DATEFIRST
pour prendre en compte tout réglage possible pour le premier jour de la semaine.
SELECT *
FROM your_table
WHERE ((DATEPART(dw, date_created) + @@DATEFIRST) % 7) NOT IN (0, 1)
Autres conseils
SELECT date_created
FROM your_table
WHERE DATENAME(dw, date_created) NOT IN ('Saturday', 'Sunday')
En supposant que vous utilisez SQL Server, utilisez DATEPART avec dw:
SELECT date_created
FROM your_table
WHERE DATEPART(dw, date_created) NOT IN (1, 7);
EDIT: Je dois signaler que la valeur numérique réelle renvoyée par DATEPART (dw) est déterminée par la valeur définie à l'aide de SET DATEFIRST:
http://msdn.microsoft.com/en-us/library/ms181598.aspx
Essayez la fonction DATENAME ()
:
select [date_created]
from table
where DATENAME(WEEKDAY, [date_created]) <> 'Saturday'
and DATENAME(WEEKDAY, [date_created]) <> 'Sunday'
La réponse dépend de la configuration de la semaine de démarrage de votre serveur. Il est donc soit
SELECT [date_created] FROM table WHERE DATEPART(w,[date_created]) NOT IN (7,1)
si le dimanche est le premier jour de la semaine pour votre serveur
ou
SELECT [date_created] FROM table WHERE DATEPART(w,[date_created]) NOT IN (6,7)
si lundi est le premier jour de la semaine pour votre serveur
Commentez si vous avez des questions: -)
Calculer les jours de congé dans une colonne du tableau comme valeur par défaut - mis à jour
Si vous utilisez SQL, voici la requête qui peut vous aider: http: //gallery.technet.microsoft.com/Calculate ...
Essayez ce code
select (DATEDIFF(DD,'2014-08-01','2014-08-14')+1)- (DATEDIFF(WK,'2014-08-01','2014-08-14')* 2)