私は大学で働き、学生管理システムの学年開始日は8月1日以前の月曜日で決定されます。私はこれを照会の中で照合しなければなりません。この日以前の月曜日の日付を簡単に取得する方法はありますか?T-sql月曜日より前に
答えて
set datefirst 1; -- Make Monday the first day of the week
select dateadd(dd, -1*(datepart(dw, '2009-08-01')-1), '2009-08-01')
返します7月27日、2009年8月1日か前に、2005年に変更し、それを8月1日は月曜日だったとクエリが08-01
datepartを使用して平日を取得し、次にあなたの月曜日に戻って少し計算します。この例では、米国のデフォルトのdatefirst 7(月曜日が2日目)を使用しています。あなたのロケールの月曜日を指定する曜日を追加する日を調整します。
月曜日select dateadd(dd, -datepart(dw, '2009-08-01') + 2, '2009-08-01')
非常にハックを返しますとき
DECLARE @weekday int
SELECT @weekday = DATEPART(WEEKDAY, '1-Aug-2009')
SELECT CASE
WHEN @weekday = 1 THEN '1-Aug-2009' ELSE DATEADD (dd,(@weekday-2)*-1, '1-Aug-2009')
END
これは、任意の月(@inputdate)の最初の月曜日が返されます、一般的なアルゴリズムです:
DATEADD(wk, DATEDIFF(wk, 0, dateadd(dd, 6 - datepart(day, @inputDate), @inputDate)), 0)
これは、SQL Serverで月の最初の月曜日を取得する一般的な方法です。このlinkは、上記の計算が他の多くの日付計算と一緒にどのように機能するかを説明しています。ここで
は、上記のアルゴリズムは上か月の1日前の月曜日を取得するために使用することができる方法である:私は必要なので
-- Set month to get Monday before or at 1st of month.
DECLARE @inputDate DATETIME
SET @inputDate = '2009-08-01'
-- Get first Monday of month.
DECLARE @firstMonday DATETIME
SET @firstMonday = DATEADD(wk, DATEDIFF(wk, 0, dateadd(dd, 6 - datepart(day, @inputDate), @inputDate)), 0)
-- Determine date for first Monday on or before 1st of month.
DECLARE @startDate DATETIME
SET @startDate = @firstMonday
IF @firstMonday > @inputDate
SET @startDate = DATEADD(wk, -1, @firstMonday)
SELECT @startDate
が受け入れ答えは私のために動作しませんでした両方日曜日と月曜日の週に同じクエリを実行します。これは、異なるまたがっ作品 "DATEFIRST" の設定:
SELECT DATEADD(d, -((DATEPART(WEEKDAY, '20110515') - DATEPART(dw, '19000101') + 7) % 7), '20110515')
"DATEPART(DW '19000101')は、" 1900年1月1日が月曜日にあったため設定あなたの "DATEFIRST" を決定します。火曜日を基準にした週が必要な場合は、19000101を19000102に変更できます。
BTW、 '20110515'は、すべてのSQL Serverのカルチャ設定で機能する唯一の日付形式です。 「2011-05-06」のような日付は、一部の国で誤解されます。 (これを指摘するためのItzik Ben-Ganへのクレジット)
+1は、エレガントな、「datefirst」にとらわれないソリューションです。 –
ニース、受け入れられる回答にする必要があります – nhaberl
- 1. 前の月曜日&前の日曜日の日付が
- 2. 仕事日 - 月曜日から金曜日までのTsqlを計算する
- 3. mysql week月曜日から日曜日
- 4. 曜日の日(月曜日= 1、火曜日= 2)
- 5. Quartz.Net - 月曜日、火曜日、水曜日の3週間ごと
- 6. 最後の月曜日は月曜日です
- 7. SQLのGROUP(月曜日午前6時59分59秒まで月曜日午前7時00分00秒)
- 8. iOSの今日の前日の月曜日を見つける
- 9. 前月のすべての月曜日または火曜日の取得方法
- 10. 最初の[月曜日]、2番目の[木曜日]などDelphi
- 11. SSRS SUM IIf月曜日から土曜日まで
- 12. 週機能を作成するが、日曜日の曜日の開始日ではない月曜日
- 13. 毎週月曜日に厳密に月曜日に実行されるWindowsサービス4am
- 14. 私の週カレンダーを日曜日ではなく月曜日から始める
- 15. 土曜日、月曜日、水曜日の選択リスト/ドロップダウンにjqueryスクリプトを入力する
- 16. MaterialiseCSSからの入力に曜日(月曜日、火曜日など)を追加します
- 17. 次の月曜日または木曜日にmoment.jsを取得する
- 18. NSArrayには曜日と年の月があります
- 19. jsで月の4月曜日を取得するには?
- 20. Sql get Employee開始日(例:曜日、月曜日、火曜日など)の週の作業時間
- 21. クォーツクーロン式 - 毎月最後の土曜日
- 22. 月曜日から始まるDojo DateTextBox
- 23. 月曜日、2月9日のような日付を表示する日付ピッカー
- 24. 時間、日付、日時、曜日、週、年の月など
- 25. UIDatepicker日付月曜日の日付のみを表示
- 26. 月の最後の月曜日の見つけ方
- 27. TSQLレポート - 曜日別にデータをピボットしますか?
- 28. PHP - 最近土曜日渡されます(前土曜日)
- 29. 2012年2月7日火曜日に変換する日付2012年2月7日
- 30. Objective-c月曜日から始まる週の曜日を取得します。日曜日はありません。
次の理由で間違った結果が返されるので、これをマークしました。select dateadd(dd、-datepart(dw、 '2011-05-15')+ 2、 '2011 -05-15 ')。これは '2011-05-16'を返します。 –