2017-01-18 3 views
0

土曜日から金曜日までの今週のSQL Serverからデータを取得するには、今週の土曜日から金曜日のすべてのデータを選択します。現在の週のデータを取得する方法SQLサーバーから金曜日の土曜日の終わりに開始

私はこのコードを見つけましたが、日曜日に始まったと私はそれを変更することはできません:デフォルトでは

where Date >= dateadd(day, 1-datepart(dw, getdate()), CONVERT(date,getdate())) AND Date < dateadd(day, 8-datepart(dw, getdate()), CONVERT(date,getdate())) 

答えて

3

SET DATEFIRST 6 

WHERE Date >= Cast(Dateadd(dd, -Datepart(WEEKDAY, Getdate()) + 1, Getdate()) AS DATE) 
     AND Date < Cast(Dateadd(dd, 7 - Datepart(WEEKDAY, Getdate()) + 1, Getdate()) AS DATE) 

詳細情報は、MSドキュメント上SET DATEFIRSTを見てみましょう。

1から7

て数週の最初の曜日を設定します:

1 Monday 
2 Tuesday 
3 Wednesday 
4 Thursday 
5 Friday 
6 Saturday 
7 Sunday (default, U.S. English) 

は、次の例を見てください:

DECLARE @CurrentDate DATETIME; 
SET @CurrentDate = CONVERT(DATETIME,'2017-01-18'); 

SET DATEFIRST 1 
SELECT DATEADD(day, 1 - DATEPART(dw, @CurrentDate), @CurrentDate); 
RETURNS '2017-01-16' (Monday) 

SET DATEFIRST 2 
SELECT DATEADD(day, 1 - DATEPART(dw, @CurrentDate), @CurrentDate); 
RETURNS '2017-01-17' (Tuesday) 

SET DATEFIRST 3 
SELECT DATEADD(day, 1 - DATEPART(dw, @CurrentDate), @CurrentDate); 
RETURNS '2017-01-18' (Wednesday) 

SET DATEFIRST 4 
SELECT DATEADD(day, 1 - DATEPART(dw, @CurrentDate), @CurrentDate); 
RETURNS '2017-01-12' (Thursday) 

SET DATEFIRST 5 
SELECT DATEADD(day, 1 - DATEPART(dw, @CurrentDate), @CurrentDate); 
RETURNS '2017-01-13' (Friday) 

SET DATEFIRST 6 
SELECT DATEADD(day, 1 - DATEPART(dw, @CurrentDate), @CurrentDate); 
RETURNS '2017-01-14' (Saturday) 

SET DATEFIRST 7 
SELECT DATEADD(day, 1 - DATEPART(dw, @CurrentDate), @CurrentDate); 
RETURNS '2017-01-15' (Monday) 

ここで確認できます:http://rextester.com/YSGVM53271

+0

こんにちは、おかげで、実際には数0から7まで、 編集あなたの答えは、それ答えにする必要があります。 –

+0

あなたはそれが0-7を実行していると確信していますか?それは8つの異なる設定を示唆します - 0は何ですか?たぶんそれは何かをするかもしれません - しかし、答えは終日をカバーしているので、あなたはそれを必要としません。 – Cato

+0

もし最初の土曜日にフォーム1を書いたら、試してみてください。 –

1

週をsundayから開始します。変更するにはDATEFIRSTを使用してください。 DATEFIRST

+---------------------------+--------------------------+ 
|   Value   | First day of the week is | 
+---------------------------+--------------------------+ 
| 1       | Monday     | 
| 2       | Tuesday     | 
| 3       | Wednesday    | 
| 4       | Thursday     | 
| 5       | Friday     | 
| 6       | Saturday     | 
| 7 (default, U.S. English) | Sunday     | 
+---------------------------+--------------------------+ 
0

以下を試すことができます。それは関係なく、SET DATEFIRST値の作品:あなたの答えのための

where [Date] >= CAST(DATEADD(d, -(@@DATEFIRST + DATEPART(dw, GETDATE())) % 7, @d) as DATE) 
    and [Date] < CAST(DATEADD(d, -(@@DATEFIRST + DATEPART(dw, GETDATE())) % 7 + 6, @d) as DATE) 
+0

何が列名@dですか? –

関連する問題