How to get Nummer der Woche im Monat aus dem Datum in sql server 2008
In der SQL-Anweisung in microsoft sql server gibt es eine eingebaute Funktion, um die Woche Nummer, aber es ist die Woche des Jahres.
Select DatePart(week, '2012/11/30') // **returns 48**
Ist der zurückgegebene Wert 48 ist die Nummer der Woche des Jahres.
Statt 48, ich will 1, 2, 3 oder 4 (Nummer der Woche im Monat). Ich denke, die Nummer der Woche im Monat erreicht werden kann, indem Module mit Monats-Nummer von dieser Woche. Für z.B.
Select DATEPART(week, '2012/11/30')%MONTH('2012/11/30')
Aber ich möchte wissen, gibt es weitere eingebaute Funktionen, um Wochennummer des Monats in MS SQL SERVER.
- sehen: stackoverflow.com/questions/4928038/..., während Ihre Lösung ist die, die sieht sehr elegant zu mir. +1 für das
- die Lösung gepostet in der Frage ist nicht einmal in der Nähe zu arbeiten
- wie definieren Sie Wochennummer ? An welchem Tag die Woche beginnen die Woche (Sonntag oder Montag). Wollen Sie halbe Wochen, die in 2 verschiedenen Monaten, möchten Sie behandeln es wie iso_week oder nur ganze Wochen?
- Gestand ich, dass die Antwort in dieser Frage ist falsch. Ich poste die richtige Antwort nach der ich zum Schluss die Lösung.
- Sorry für den necro. Ich brauchte etwas, das sehr ähnlich ist, aber alle Ergebnisse, die ich gefunden sind, wie @t-clausen.dk 's Antwort. Meine interpretation der obigen Frage ist, dass, Jan 1 - Jan 7 wäre Woche 1, Jan 8-14 Woche 2 usw. Das ist das, was ich brauchte, und ich kam mit dieser: wählen Sie (datepart(Tag, @date) - 1) / 7 % 7 + 1
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier sind 2 verschiedene Arten, die beide davon aus, die Woche beginnt am Montag
Wenn Sie möchten, Wochen, ganzen, Sie gehören also zu dem Monat, in dem Sie starten:
Also Samstag 2012-09-01-und Sonntag 2012-09-02 ist Woche 4 und Montag 2012-09-03 Woche 1 verwenden:
Wenn Ihre Wochen-Schnitt auf monthchange also Samstag 2012-09-01-und Sonntag 2012-09-02 wird Woche 1 Montag 2012-09-03 Woche 2 Verwendung:
select datediff(week, dateadd(week, datediff(week, 0, dateadd(month, datediff(month, 0, @date), 0)), 0), @date)
5 zurückgibt, das ist richtig.Keine built-in-Funktion. Es hängt davon ab, was du damit meinst Woche im Monat. Sie könnte bedeuten, ob es in den ersten 7 Tagen (Woche 1), die zweiten 7 Tage (Woche 2), etc. In diesem Fall würde es nur werden,
(DATEPART(day,@Date)-1)/7 + 1
Wenn Sie möchten, verwenden Sie die gleiche wochenzahl als mit DATEPART(Woche), könnten Sie die Differenz zwischen der Woche zahlen ab dem ersten Monat und das Datum in Frage (+1):
(DATEPART(week,@Date)- DATEPART(week,DATEADD(m, DATEDIFF(m, 0, @Date), 0))) + 1
Oder müssen Sie möglicherweise etwas anderes, je nachdem, was Sie bedeuten, indem Sie die Nummer der Woche.
Nur aufs Datum schauen und sehen, wie weit er fällt.
Range 1-7 ist der 1. Woche, Range 8-14 ist die 2. Woche, etc.
Ähnlich wie die zweite Lösung, weniger code:
Es gibt keine eingebaute Funktion, um Ihnen die Nummer der Woche. Ich glaube nicht, dass die Aufteilung wird Ihnen helfen, auf jeden Fall als die Anzahl der Wochen in einem Monat ist nicht konstant.
http://msdn.microsoft.com/en-us/library/bb675168.aspx
Ich denke, Sie können teilen Sie die Anzahl(48) von 4 und nehmen Sie die Module von der gleichen und das Projekt, das als die Nummer der Woche, der Monat, indem zu dem Ergebnis.
Hier ist ein Vorschlag, um die ersten und letzten Tage der Woche für einen Monat:
Check this out... seine Arbeitsmethoden in Ordnung.
Dirty aber einfach einen liner mit Dense_Rank-Funktion. Performance WIRD leiden, aber effektiv nicht weniger.
Hier ist die Abfrage, bringt die Nummer der Woche auf das, was die
startday
undendday
der Woche kann es sein.Weitere Informationen, die ich habe, beantwortet die folgende Frage. Können überprüfen, dass.
Hier gehen Sie....
Im mit Sie den code unten..
Versuchen Folgenden Code:
Können Sie einfach in der Woche Anzahl der durch ein minimum Nummer der Woche im Monat zieht es von Woche Anzahl. Angenommen, Sie haben eine Tabelle mit Daten
Lösung:
Hier ist die bewährte Lösung für diese Abfrage in jeder situation, wie wenn der 1. des Monats ist am Freitag , dann auch diese arbeiten -
oben sind einige Lösungen, die fehlschlagen, wenn der Monat, der erste Termin ist am Freitag , 4. dann wird der 2. Woche des Monats
Code ist unten: