私は大学で働き、学生管理システムの学年開始日は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. 前の月曜日&前の日曜日の日付が
- 3. SSRS前回月曜日の月曜日までの表現
- 4. 仕事日 - 月曜日から金曜日までのTsqlを計算する
- 5. 毎月第1月曜日と第3月曜日の前日にAPSchedulerジョブを実行しています
- 6. mysql week月曜日から日曜日
- 7. よくある質問とその前の月曜日の月曜日と来週の月曜日の間に投稿
- 8. 曜日の日(月曜日= 1、火曜日= 2)
- 9. Cron式:月曜日の第3月曜日の第1金曜日
- 10. Javascript - "月曜日"から "月曜日"や "火曜日"などの "火"から
- 11. 月曜日から金曜日までの月曜日から日曜日までのリスト
- 12. SQLのGROUP(月曜日午前6時59分59秒まで月曜日午前7時00分00秒)
- 13. スウィフト3 - 月曜日
- 14. Quartz.Net - 月曜日、火曜日、水曜日の3週間ごと
- 15. 最後の月曜日は月曜日です
- 16. iOSの今日の前日の月曜日を見つける
- 17. 日曜日に月曜日を取得する
- 18. SQL:日曜日に戻ってきた月曜日の返信
- 19. Djangoのフィルタクエリの曜日(連続して月の木曜日に金曜日)
- 20. PHPの日付 - 86400 * 7平日 - 月曜日はいつも月曜日ではありませんか?
- 21. 月の最初の日を文字列で(月曜日、火曜日)、PHPで
- 22. 月曜日 - 日曜日のカレンダー年の週当たりの収益
- 23. WindowsユニバーサルプラットフォームCalendarView月曜日から曜日に変更する
- 24. 金曜日のデータを月曜日に取得する
- 25. 前月のすべての月曜日または火曜日の取得方法
- 26. PHP/MySQLでの月曜日と日曜日のクエリの実行
- 27. 月曜日のすべての日曜日をハイライト
- 28. 開始週(月曜日)JavaScript
- 29. 毎月最終水曜日
- 30. MdDatePicker開始週(月曜日)
次の理由で間違った結果が返されるので、これをマークしました。select dateadd(dd、-datepart(dw、 '2011-05-15')+ 2、 '2011 -05-15 ')。これは '2011-05-16'を返します。 –