Wochentag oder Wochenende?
Mai
9
Written by:
09.05.2009 07:23
Wochentag oder Wochenende?
Nichts weltbewegendes, aber manchmal braucht man die Antwort auf diese Frage (z.B. in Datawarehouse).
Das müsste schon die einfachste Variante sein.
-- Ist es Wochenende oder muss ich arbeiten?
SELECT d.Datum, DATENAME(dw, d.Datum) AS WochenTag,
(DATEPART(dw, d.Datum) / 6) AS IstWochende,
1 - (DATEPART(dw, d.Datum) / 6) AS IstWerktag
FROM (SELECT CONVERT(datetime, '20090118') AS Datum
UNION ALL SELECT CONVERT(datetime, '20090117')
UNION ALL SELECT CONVERT(datetime, '20090116')
UNION ALL SELECT CONVERT(datetime, '20090115')
UNION ALL SELECT CONVERT(datetime, '20090114')
UNION ALL SELECT CONVERT(datetime, '20090113')
UNION ALL SELECT CONVERT(datetime, '20090112')
UNION ALL SELECT CONVERT(datetime, '20090111')
UNION ALL SELECT CONVERT(datetime, '20090110')
) AS d
(Wochentag oder Wochenende?)
2 comment(s) so far...
Re: Wochentag oder Wochenende?
wie wär es noch mit der version für heute? SELECT CONVERT(char,d.Datum,104) AS Datum, DATENAME(dw, d.Datum) AS WochenTag, (DATEPART(dw, d.Datum) / 6) AS IstWochende, 1 - (DATEPART(dw, d.Datum) / 6) AS IstWerktag FROM (SELECT CONVERT(datetime, getdate()) AS Datum ) AS d
By UliDD on
29.05.2009 18:31
|
Re: Wochentag oder Wochenende?
Hallo Olaf,
Dein Code ist abhängig von der Spacrh- bzw. DATEFIRST-Einstellung. Das kann zu Problemen führen, weil diese Einstellungen in der Verbindung festgelegt werden. Probier einmal das hier:
set language us_english dbcc useroptions
DATEFIRST ist nun 7 und Dein Code funktioniert nicht mehr, da Du die Wochentagsnummern hart verdrahtest. Besser ist es so:
cast(case when (datepart(dw, Datum) + @@datefirst) % 7 = 1 then 1 else 0 end as bit) as IsWochenende
Viele Grüße, Holger
By Vorsicht mit DATEFIRST on
02.06.2009 12:56
|