2016-04-21 14 views
1

Ich hatte vor langer Zeit eine Tabelle mit SQL erstellt, die Tag, Monat, Jahr, Wochentag, Datum und Periode hatte (Beispiel: April 2016). Dies ist, was meine aktuelle Tabelle wie folgt aussieht:SQL-Tabelle mit Tag, Datum, Monat, Jahr, Periode, Wochennummer? (SQL)

| Period | Day | Month | Year | Weekday | Date | 
|:-----------|-----|-------|------|---------|----------:| 
| April 2016 | 21 | April |2016 |Thursday |2016-04-21 | 

Jetzt bin ich brauche Woche (es ist Woche 1, 2, ... dem aktuellen Monats) hinzuzufügen.

Diese Select-Anweisung gibt das richtige Ergebnis:

SELECT datediff(week, dateadd(week, datediff(week, 0, dateadd(month, datediff(month, 0, GETDATE()), 0)), 0), GETDATE() - 1) + 1

Diese Abfrage liefert

4 

Wie füge ich eine neue Spalte Woche in dieser vorhandenen Tabelle genannt und haben es finden die aktuelle Wochennummer?

Ich glaube, dass die vorhandene Tabelle GETDATE() verwendet, um ihre Werte zu berechnen. Leider habe ich meine Abfrage CREATE nicht mehr.

Jede Hilfe wird sehr geschätzt!

+0

'Leider habe ich meine Abfrage CREATE nicht mehr. Verwenden Sie SQL Server Management S Klicken Sie mit der rechten Maustaste auf die Tabelle, und erstellen Sie das Erstellskript. – Squirrel

+0

Klicken Sie mit der rechten Maustaste auf> Skripttabelle als> ERSTELLEN> Neues Fenster des Abfrageeditors? Wenn ja, erstellt das nur die Spalten, aber setzt ihre berechneten Werte nicht :( – Nestalna

Antwort

0

Zuerst eine Spalte für week hinzufügen ALTER TABLE

ALTER TABLE TableName 
ADD Week int 

Dann UPDATE die Säule mit der Wochennummer mit:

UPDATE TableName 
SET Week = DATEPART(day, DATEDIFF(day, 0, [Date])/7 * 7)/7 + 1 

Hinweis: Diese week Zahl am Tag Zahl allein basiert, nicht auf die Tage der Woche (Montag, Dienstag) etc.