Étant donné un datetime
est-ce qu'il y a un moyen de savoir que c'est une Saturday
o Sunday
.
Toutes les idées et suggestions sont appréciées !
Étant donné un datetime
est-ce qu'il y a un moyen de savoir que c'est une Saturday
o Sunday
.
Toutes les idées et suggestions sont appréciées !
DECLARE @dayNumber INT;
SET @dayNumber = DATEPART(DW, GETDATE());
--Sunday = 1, Saturday = 7.
IF(@dayNumber = 1 OR @dayNumber = 7)
PRINT 'Weekend';
ELSE
PRINT 'NOT Weekend';
Cela peut générer des résultats erronés, car le nombre produit par la partie date du jour de la semaine dépend de la valeur définie par SET DATEFIRST. Ceci définit le premier jour de la semaine. Une autre façon de procéder est donc la suivante :
DECLARE @dayName VARCHAR(9);
SET @dayName = DATEName(DW, GETDATE());
IF(@dayName = 'Saturday' OR @dayName = 'Sunday')
PRINT 'Weekend';
ELSE
PRINT 'NOT Weekend';
Cette expression
SELECT (((DATEPART(DW, @my_date_var) - 1 ) + @@DATEFIRST ) % 7)
retournera toujours un nombre compris entre 0 et 6 où
0 -> Sunday
1 -> Monday
2 -> Tuesday
3 -> Wednesday
4 -> Thursday
5 -> Friday
6 -> Saturday
Indépendamment de @@DATEFIRST
Un jour de week-end est donc testé comme suit
SELECT (CASE
WHEN (((DATEPART(DW, @my_date_var) - 1 ) + @@DATEFIRST ) % 7) IN (0,6)
THEN 1
ELSE 0
END) AS is_weekend_day
SELECT DATENAME(weekday, GetDate())
Vérifiez ceci pour le serveur sql : http://msdn.microsoft.com/en-US/library/ms174395(v=sql.90).aspx Vérifiez ceci pour .net : http://msdn.microsoft.com/en-us/library/bb762911.aspx
Attention : Les autres réponses ne fonctionnent que sur les serveurs SQL avec une configuration anglaise ! Utilisez SET DATEFIRST 7
pour garantir DATEPART(DW, ...)
rendements 1 pour le dimanche et 7 pour le samedi.
Voici une version qui est indépendante du paramètre local et qui ne nécessite pas d'utiliser :
CREATE FUNCTION [dbo].[fct_IsDateWeekend] ( @date DATETIME )
RETURNS BIT
AS
BEGIN
RETURN CASE WHEN DATEPART(DW, @date + @@DATEFIRST - 1) > 5 THEN 1 ELSE 0 END;
END;
Si vous ne voulez pas utiliser la fonction, utilisez simplement ceci dans votre instruction SELECT :
CASE WHEN DATEPART(DW, YourDateTime + @@DATEFIRST - 1) > 5 THEN 'Weekend' ELSE 'Weekday' END
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.