Pour obtenir tous les week-end dates de l'année en cours en SQL?

J'ai essayé, mais ne pouvait pas obtenir la bonne solution. Je veux une requête SQL qui répertorie tous les week-end dates de l'année en cours.

J'ai essayé cette requête SQL:

WITH hier(num, lvl) AS (
    SELECT  0, 1
            UNION ALL
    SELECT  100, 1
            UNION ALL 
    SELECT  num + 1, lvl + 1
    FROM    hier
    WHERE   lvl < 100 
)
SELECT lvl [Week], 
convert(date,DATEADD(dw, -DATEPART(dw, DATEADD(wk,DATEDIFF(wk,0,'12/31/'+convert(nvarchar,YEAR(getdate()))), 0)+6 ),
DATEADD(wk, DATEDIFF(wk,0,'12/31/'+convert(nvarchar,YEAR(getdate()))), 0)+6 ) - num  * 7,101) [End Date]
FROM    hier a
where   num < 52
ORDER BY [End Date] asc

Sa sortie, c'est comme cela:

Week  End date
52  2012-01-14
51  2012-01-21
50  2012-01-28
49  2012-02-04

Je veux les dates depuis le début – donc, le ci-dessus est manquant un week-end, qui est 2012-07-01. Aussi, je veux les numéros de semaine pour montrer que 1, 2, 3... au lieu de 52, 51....

Tout d'abord, définir ce que vous signifie en fin de semaine date - différentes cultures définissent ces choses différemment. En supposant que vous dire un week-end, les samedis et dimanches, à quelle date avez-vous besoin? Le samedi, le dimanche, les deux? Si les deux, comme deux colonnes en une seule ligne, ou sous forme de lignes séparées?
Date de fin est le samedi

OriginalL'auteur Kartik Patel | 2012-09-19