¿Cómo excluyo valores en una columna DateTime
que son sábados o domingos?
Por ejemplo, dados los siguientes datos:
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
este es el resultado que estoy buscando:
date_created '2009-11-26 09:00:00' -- Thursday '2009-11-27 09:00:00' -- Friday '2009-11-30 09:00:00' -- Monday
¡Gracias!
Cuando se trata de cálculos del día de la semana, es importante tener en cuenta la configuración actual de DATEFIRST
. Esta consulta siempre excluirá correctamente los días de fin de semana, utilizando @@DATEFIRST
para tener en cuenta cualquier configuración posible para el primer día de la semana.
SELECT * FROM your_table WHERE ((DATEPART(dw, date_created) + @@DATEFIRST) % 7) NOT IN (0, 1)
SELECT date_created FROM your_table WHERE DATENAME(dw, date_created) NOT IN ('Saturday', 'Sunday')
Suponiendo que está usando SQL Server, use DATEPART con dw:
SELECT date_created FROM your_table WHERE DATEPART(dw, date_created) NOT IN (1, 7);
EDITAR: Debo señalar que el valor numérico real devuelto por DATEPART (dw) está determinado por el valor establecido mediante SET DATEFIRST:
http://msdn.microsoft.com/en-us/library/ms181598.aspx
Pruebe la función DATENAME()
:
select [date_created] from table where DATENAME(WEEKDAY, [date_created]) <> 'Saturday' and DATENAME(WEEKDAY, [date_created]) <> 'Sunday'
La respuesta depende de la configuración de inicio de semana de tu servidor, por lo que
SELECT [date_created] FROM table WHERE DATEPART(w,[date_created]) NOT IN (7,1)
si el domingo es el primer día de la semana para su servidor
o
SELECT [date_created] FROM table WHERE DATEPART(w,[date_created]) NOT IN (6,7)
si el lunes es el primer día de la semana para su servidor
Comenta si tienes alguna pregunta 🙂
Calcular Dejar días laborables en una columna de tabla como valor predeterminado: actualizado
Si está usando SQL aquí está la consulta que puede ayudarlo: http: //gallery.technet.microsoft.com/Calculate …
Prueba este código
select (DATEDIFF(DD,'2014-08-01','2014-08-14')+1)- (DATEDIFF(WK,'2014-08-01','2014-08-14')* 2)