あなただけの今までの週末は、以前の必要がある場合、このコードは動作します:
SELECT *
FROM VW_Resultaat_Score
WHERE GameDate BETWEEN
(SELECT DATEADD(d, 1 - datepart(weekday, dateadd(d, 2, getdate())), getdate()))
AND
(SELECT DATEADD(d, 1 - datepart(weekday, dateadd(d, 1, getdate())), getdate()))
コードは、少しクレイジーに見えますそれは動作します。あなたが他の特定の週末を照会する必要があるかもしれない場合は、これはオプションとなることがあります。
DECLARE @getdate date
SET @getdate='2017-05-16'
SELECT *
FROM VW_Resultaat_Score
WHERE GameDate BETWEEN
(SELECT DATEADD(d, 1 - datepart(weekday, dateadd(d, 2, @getdate)), @getdate))
AND
(SELECT DATEADD(d, 1 - datepart(weekday, dateadd(d, 1, @getdate)), @getdate))
さらに一歩それを取ると、あなたは、これらの週末のそれぞれに報告する必要があるかもしれません。次のコードは、2017年の毎週金曜日の土曜日を示しています。
WITH Fri as
(SELECT DATEPART(YEAR,DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), n.num)) yyyy, DATEPART(wk,DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), n.num)) weeknumber, Fridays = CAST(DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), n.num) as Date)
FROM (SELECT TOP 366 num = ROW_NUMBER() OVER(ORDER BY a.NAME)-1 FROM dbo.syscolumns a, dbo.syscolumns b) n
WHERE DATENAME(weekday, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), n.num)) = 'Friday')
,
Sat as
(SELECT weeknumber=DATEPART(wk,DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), n.num)), Saturdays = CAST(DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), n.num) as Date)
FROM (SELECT TOP 366 num = ROW_NUMBER() OVER(ORDER BY a.NAME)-1 FROM dbo.syscolumns a, dbo.syscolumns b) n
WHERE DATENAME(weekday, DATEADD(yy, DATEDIFF(yy, 0, GETDATE()), n.num)) = 'Saturday')
Select Fri.weeknumber, fri.yyyy, Fridays, Saturdays
FROM Fri
JOIN Sat on Fri.weeknumber=Sat.weeknumber
まず、SET DATEFIRST 6は金曜日ではなく土曜日に開始するように設定しています。あなたは '5'を使いたいと思っています。第二に、あなたはこの質問から何を得るのですか? –
'where'句は日付と2つの文字列リテラルを比較しようとしていますが、どちらも日付を含んでいません。列のエイリアスについては、[文字列リテラルかエイリアスですか?](http://weblogs.sqlteam.com/jeffs/archive/2007/08/30/string-literal-alias -sql-server.aspx)。 – HABO