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?
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?
Auch wenn SQLMenace's Antwort akzeptiert wurde, gibt es einen wichtigen Punkt SET
Option, die Sie kennen sollten
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
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 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.