Domanda

Come posso escludere i valori in una colonna DateTime che sono sabato o domenica?

Ad esempio, dati i seguenti dati:

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

questo è il risultato che sto cercando:

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

Grazie!

È stato utile?

Soluzione

Quando si ha a che fare con i calcoli del giorno della settimana, è importante tenere conto dell'attuale DATEFIRST . Questa query esclude sempre correttamente i giorni del fine settimana, utilizzando @@ DATEFIRST per tenere conto di ogni possibile impostazione per il primo giorno della settimana.

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

Altri suggerimenti

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

Supponendo che tu stia utilizzando SQL Server, usa DATEPART con dw:

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

MODIFICA: Devo sottolineare che il valore numerico effettivo restituito da DATEPART (dw) è determinato dal valore impostato utilizzando SET DATEFIRST:
http://msdn.microsoft.com/en-us/library/ms181598.aspx

Prova la funzione DATENAME () :

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

La risposta dipende dalla configurazione di inizio settimana del server, quindi è

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

se domenica è il primo giorno della settimana per il tuo server

o

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

se lunedì è il primo giorno della settimana per il tuo server

Commenta se hai domande :-)

Calcola Lascia giorni lavorativi in ??una colonna della tabella come valore predefinito - aggiornato

Se si utilizza SQL, ecco la query che può essere d'aiuto: http: //gallery.technet.microsoft.com/Calculate ...

Prova questo codice

select (DATEDIFF(DD,'2014-08-01','2014-08-14')+1)- (DATEDIFF(WK,'2014-08-01','2014-08-14')* 2)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top