Pregunta

¿Cómo excluyo los valores de 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!

¿Fue útil?

Solución

Cuando se trata de cálculos del día de la semana, es importante tener en cuenta el DATEFIRST configuración. 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)

Otros consejos

SELECT date_created
FROM your_table
WHERE DATENAME(dw, date_created) NOT IN ('Saturday', 'Sunday')

Suponiendo que está utilizando 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 su servidor, por lo que es

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 hábiles en una columna de la tabla como un valor predeterminado - actualizado

Si está utilizando SQL, aquí está la consulta que puede ayudarlo: http: //gallery.technet.microsoft.com/Calculate ...

Pruebe este código

select (DATEDIFF(DD,'2014-08-01','2014-08-14')+1)- (DATEDIFF(WK,'2014-08-01','2014-08-14')* 2)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top