web-dev-qa-db-fra.com

Comment exclure des jours de week-end dans une requête SQL Server?

Comment exclure des valeurs d'une colonne DateTime qui sont des samedis ou des dimanches?

Par exemple, compte tenu 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

c'est 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!

57
Andrew

Lors du calcul des jours de la semaine, il est important de prendre en compte les paramètres DATEFIRST actuels. Cette requête exclura toujours correctement les jours de week-end, en utilisant @@DATEFIRST pour tenir compte de tout paramètre possible pour le premier jour de la semaine.

SELECT *
FROM your_table
WHERE ((DATEPART(dw, date_created) + @@DATEFIRST) % 7) NOT IN (0, 1)
116
LukeH
SELECT date_created
FROM your_table
WHERE DATENAME(dw, date_created) NOT IN ('Saturday', 'Sunday')
17
kevchadders

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 souligner que la valeur numérique réelle retourné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

11
gkrogers

Essayez la fonction DATENAME():

select [date_created]
from table
where DATENAME(WEEKDAY, [date_created]) <> 'Saturday'
  and DATENAME(WEEKDAY, [date_created]) <> 'Sunday'
8
Andrew

La réponse dépend de la configuration de début de semaine 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 le lundi est le premier jour de la semaine pour votre serveur

Commentez si vous avez des questions :-)

2
Gausie

Calculer les jours ouvrables de congé dans une colonne de 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 ...

1