439 Stimmen

Abrufen des Wochentags in SQL Server 2005/2008

Wenn ich ein Datum 01/01/2009 habe, möchte ich herausfinden, welcher Tag es war, z. B. Montag, Dienstag usw.

Gibt es in SQL Server 2005/2008 eine eingebaute Funktion für diese Aufgabe? Oder muss ich eine Hilfstabelle verwenden?

802voto

SQLMenace Punkte 128184

Verwenden Sie DATENAME ou DATEPART :

SELECT DATENAME(dw,GETDATE()) -- Friday
SELECT DATEPART(dw,GETDATE()) -- 6

106voto

dance2die Punkte 33736

Auch wenn SQLMenace's Antwort akzeptiert wurde, gibt es einen wichtigen Punkt SET Option, die Sie kennen sollten

DATEFIRST SETZEN

DATENAME wird das richtige Datum zurückgeben Name aber nicht dasselbe DATEPART Wert, wenn der erste Wochentag wie unten dargestellt geändert wurde.

declare @DefaultDateFirst int
set @DefaultDateFirst = @@datefirst
--; 7 First day of week is "Sunday" by default
select  [@DefaultDateFirst] = @DefaultDateFirst 

set datefirst @DefaultDateFirst
select datename(dw,getdate()) -- Saturday
select datepart(dw,getdate()) -- 7

--; Set the first day of week to * TUESDAY * 
--; (some people start their week on Tuesdays...)
set datefirst 2
select datename(dw,getdate()) -- Saturday
--; Returns 5 because Saturday is the 5th day since Tuesday.
--; Tue 1, Wed 2, Th 3, Fri 4, Sat 5
select datepart(dw,getdate()) -- 5 <-- It's not 7!
set datefirst @DefaultDateFirst

33voto

Sutirth Punkte 922
SELECT  CASE DATEPART(WEEKDAY,GETDATE())  
    WHEN 1 THEN 'SUNDAY' 
    WHEN 2 THEN 'MONDAY' 
    WHEN 3 THEN 'TUESDAY' 
    WHEN 4 THEN 'WEDNESDAY' 
    WHEN 5 THEN 'THURSDAY' 
    WHEN 6 THEN 'FRIDAY' 
    WHEN 7 THEN 'SATURDAY' 
END

17voto

npg Punkte 161

EUROPA:

declare @d datetime;
set @d=getdate();
set @dow=((datepart(dw,@d) + @@DATEFIRST-2) % 7+1);

11voto

lazerwire.com Punkte 135

Um einen deterministischen Wert für den Wochentag für ein bestimmtes Datum zu erhalten, können Sie eine Kombination aus DATEPART() y @@datefirst . Ansonsten sind Sie von den Einstellungen auf dem Server abhängig.

Auf der folgenden Website finden Sie eine bessere Lösung: MS SQL: Tag der Woche

Der Wochentag liegt dann im Bereich von 0 bis 6, wobei 0 für Sonntag, 1 für Montag usw. steht. Dann können Sie eine einfache Case-Anweisung verwenden, um den richtigen Wochentagsnamen zurückzugeben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X