Pergunta

Como faço para excluir valores em uma coluna DateTime que são sábados ou domingos?

Por exemplo, dado os seguintes dados:

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 é o resultado que eu estou procurando:

date_created
'2009-11-26 09:00:00'  -- Thursday
'2009-11-27 09:00:00'  -- Friday
'2009-11-30 09:00:00'  -- Monday

Obrigado!

Foi útil?

Solução

Ao lidar com cálculos do dia-de-semana, é importante ter em conta a actual DATEFIRST configurações. Esta consulta será sempre excluir corretamente dias de fim de semana, usando @@DATEFIRST a conta por qualquer possível cenário para o primeiro dia da semana.

SELECT *
FROM your_table
WHERE ((DATEPART(dw, date_created) + @@DATEFIRST) % 7) NOT IN (0, 1)

Outras dicas

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

Assumindo que você está usando SQL Server, uso DATEPART com dw:

SELECT date_created
FROM your_table
WHERE DATEPART(dw, date_created) NOT IN (1, 7);

EDIT: Gostaria de salientar que o valor numérico real retornado por DATEPART (dw) é determinado pelo valor definido usando SET DATEFIRST:
http://msdn.microsoft.com/en-us/library/ms181598.aspx

Tente a função DATENAME():

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

A resposta depende de semana de introdução do seu servidor configurado, por isso é tanto

SELECT [date_created] FROM table WHERE DATEPART(w,[date_created]) NOT IN (7,1)

Se o domingo é o primeiro dia da semana para o servidor

ou

SELECT [date_created] FROM table WHERE DATEPART(w,[date_created]) NOT IN (6,7)

se segunda-feira é o primeiro dia da semana para o servidor

Comentário se você tem alguma dúvida: -)

Calcular Deixe dias trabalhando em uma coluna da tabela como um valor padrão - atualizados

Se você estiver usando SQL aqui é a consulta que pode ajudá-lo: http: //gallery.technet.microsoft.com/Calculate ...

Tente este código

select (DATEDIFF(DD,'2014-08-01','2014-08-14')+1)- (DATEDIFF(WK,'2014-08-01','2014-08-14')* 2)
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top