1
指定された日付に従って、週の最初と最後の日付を計算するクエリがあります。 @dDate
を設定すれば十分であり、その週の最初の(月曜日)と最後の日(日曜日)が計算されます。週の開始日と終了日が正しく計算されていません
問題は、それは間違って計算され、私はなぜ理解していません。
例:
@dDate = 2019-10-03 (year-month-day).
結果:
W_START W_END
2019-09-25 2019-10-01
しかし、それは次のようになります。なぜそれが
2019-09-30 2019-10-06
のですか?
クエリ:週の
set datefirst 1
declare @dDate date = cast('2019-10-16' as date)
select @dDAte
declare @year int = (select DATEPART(year, @dDAte))
select @year
declare @StartingDate date = cast(('' + cast(@year as nvarchar(4)) + '-01-01') as date)
select @StartingDate
declare @dateWeekEnd date = (select DATEADD(week, (datepart(week, cast(@dDate as date)) - 1), @StartingDate))
declare @dateWeekStart date = dateadd(day, -6, @dateWeekEnd)
select @dateWeekStart W_START, @dateWeekEnd W_END
クエリでは、DATEFIRST = 1を設定する必要はありませんか?今週の最初の日はいつも月曜日ですか? @FrenkyB。 – FrenkyB
。 。 2001-01-01が月曜日に落ちたという事実を利用しています。その事実は 'DATEFIRST'の影響を受けません。その事実は言語設定の影響を受けません。その事実は他の国際化設定の影響を受けません。その事実はデータベースとオペレーティングシステムに関係なく真であり、類似のロジックをデータベース間で使用することができます(構文は大きく異なります)。 –
答えをいただきありがとうございます。あなたが時間を見つけたら、別の質問に目を通すことができます:http://stackoverflow.com/questions/42758099/number-of-week-between-two-days-calculated-wrong – FrenkyB