質問
私は、日付の範囲が開始日は2年前、現在に至っています。例)'05/29/2007'~'05/29/2009'.
どのようにいただくこともできましたが上記の日付の範囲で、リストのようには次のうちどれでしょう?
(開始日の始まり"05/27/2007のではないが、"05/29/2007"開始以来、平日は日曜日および'05/27/2007"は、初日の週'05/29/2007の論の最終了日,05/30/2009、土曜日)
StartDate EndDate
05/27/2007 06/02/2007
06/03/2007 06/09/2007
...
05/24/2009 05/30/2009
[更新] ここで私は最終的に投入された問い合わせ
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 num, lvl,
DATEADD(dw, -DATEPART(dw, '2007-05-29'), '2007-05-29') + num * 7,
DATEADD(dw, -DATEPART(dw, '2007-05-29'), '2007-05-29') + (num + 1) * 7
FROM hier
where num <= 104 --; 52 weeks/year * 2
ORDER BY num
解決
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 DATEADD(dw, -DATEPART(dw, '29.05.2007'), '29.05.2007') + num * 7,
DATEADD(dw, -DATEPART(dw, '29.05.2007'), '29.05.2007') + (num + 1) * 7
FROM hier
WHERE DATEADD(dw, -DATEPART(dw, '29.05.2007'), '29.05.2007') + num * 7 < '29.05.2009'
ORDER BY
num
これを生成する行セットの範囲があります。
他のヒント
することを、確認する必要があり@@DATEFIRSTが正常に送信され、それまでお電話かメールでご連絡下さのコードです。書を読みDATEFIRSTものの理解を深めていただくためです。
SET DATEFIRST 1
DECLARE @my_date DATETIME
SET @my_date = '2007-05-29'
SELECT
DATEADD(dw, -DATEPART(dw, @my_date), @my_date) AS StartDate,
DATEADD(dw, 6 - DATEPART(dw, @my_date), @my_date) AS EndDate
きのインターネットはモバイルdirectyにSQL文を...私の長い歴史を扱う日、日付演算をいうアプローチのようなもの:
select
datepart( year, YourDateField ) as GroupYear,
datepart( week, ( YourDateField - datepart( day, YourDateField ) +1 ) as GroupWeek,
YourDateField,
OtherFields
from
YourTable
where
whateverDateRange...
group by
GroupYear,
GroupWeek
この週間の場合もご複数の年につい週1両年週間前までの2年。
どのように算引き算など余計な計算はし---のGroupWeek.これは実際に計算する最初の日の週に基づくもの日付データとしての基礎---言いデータが25,26,27年こ---うそれぞれの第2回、第3-4日の一週間にて日曜日の開始曜日1.い:
月25-2(日)=月23日(土)+1=月24日(日曜日に開始しました。月26日-3日(日)=月23日...など 月27日-4(日)=月23日
なによりも含めた、分野に質問できる日もすべてを一つのSQLコー---
所属していません StackOverflow