月曜日または火曜日の前月の取得方法を教えてください。私はそれについての例を見ていない。前月のすべての月曜日または火曜日の取得方法
0
A
答えて
1
;WITH CTE (X)
AS
(
SELECT DATEADD(MM,DATEDIFF(MM,0,GETDATE())-1,0)
),
CTE2(N) AS
(
SELECT 0
UNION ALL
SELECT 1+N FROM CTE2 WHERE N< (SELECT DATEDIFF(DD,DATEADD(MM,DATEDIFF(MM,0,GETDATE())-1,0),DATEADD(MM,1,DATEADD(MM,DATEDIFF(MM,0,GETDATE())-1,0))-1))
)
SELECT DATEADD(DD,N,X),DATENAME(DW,DATEADD(DD,N,X)) FROM CTE,CTE2 WHERE DATENAME(DW,DATEADD(DD,N,X)) IN ('Monday','Tuesday')
+0
ありがとうございます。それはきちんとしている。 – angelcake
2
あなたは使用することができます
DECLARE @d DATE = GETDATE();
SELECT sub.prev_date
FROM (SELECT @d, MONTH(DATEADD(MM, -1, @d))) AS s(d,m)
CROSS APPLY (
SELECT DATEADD(D, c-1, DATEADD(MM, -1, DATEADD(DD, 1 - DAY(d),d))) AS prev_date
FROM (
VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),
(11),(12),(13),(14),(15),(16),(17),(18),(19),(20),
(21),(22),(23),(24),(25),(26),(27),(28),(29),(30),(31))AS x(c)
) AS sub
WHERE MONTH(sub.prev_date) = s.m
AND DATENAME(dw,sub.prev_date) IN ('Monday','Tuesday');
出力:
╔════════════╗
║ prev_date ║
╠════════════╣
║ 2016-03-01 ║
║ 2016-03-07 ║
║ 2016-03-08 ║
║ 2016-03-14 ║
║ 2016-03-15 ║
║ 2016-03-21 ║
║ 2016-03-22 ║
║ 2016-03-28 ║
║ 2016-03-29 ║
╚════════════╝
警告:
SQL Server
の言語はEnglish
で、DATENAME
と一致しません。
また、DATEPART
weekday
と比較することもできますが、SET DATEFIRST
の設定が必要です。
EDIT:
ビット短く:
DECLARE @d DATE = '2015-01-01';
SELECT sub.prev_date
FROM (SELECT DATEADD(DD, c - DAY(@d),DATEADD(MM, -1, @d)) AS prev_date
FROM (VALUES (1),(2),(3),(4),(5),(6),(7),(8),(9),(10),
(11),(12),(13),(14),(15),(16),(17),(18),(19),(20),
(21),(22),(23),(24),(25),(26),(27),(28),(29),(30),(31))AS x(c)) AS sub
WHERE MONTH(sub.prev_date) = MONTH(DATEADD(MM, -1, @d))
AND DATENAME(dw,sub.prev_date) IN ('Monday','Tuesday');
+1
これは、この方法で動作させるのが非常にスマートです。どうもありがとうございます! – angelcake
2
declare @table table
(
ID integer identity,
DateRange date,
Remark nvarchar(10),
MonWeek nvarchar(1),
weekgrp integer
)
declare @from Date
declare @newfrom Date
declare @to Date
declare @min integer
declare @max integer
set @from ='2016-03-01'
set @to = '2016-03-31'
set @newfrom = '2016-03-01'
while @from <= @to
begin
insert into @table (DateRange, Remark) Values (@from,DATENAME(dw,@from))
set @from = DATEADD(dd,1,@from)
end
update @table
set MonWeek = 'Y'
where Remark = 'Monday'
select @min = MIN(ID), @max = MAX(ID) from @table
where MonWeek = 'Y'
--to calculate week group
while @min <= @max
begin
Update @table
set weekgrp = @min
where ID between @min and @min + 7
set @min = @min + 7
end
select * from @table
where Remark in ('Monday','Tuesday')
関連する問題
- 1. Javascript - "月曜日"から "月曜日"や "火曜日"などの "火"から
- 2. elasticsearch - 月曜日、火曜日などのテキストフォーマットで曜日を取得する
- 3. 曜日の日(月曜日= 1、火曜日= 2)
- 4. Quartz.Net - 月曜日、火曜日、水曜日の3週間ごと
- 5. 前日の月曜日の開始(月曜日)
- 6. SSRS前回月曜日の月曜日までの表現
- 7. 月の最初の日を文字列で(月曜日、火曜日)、PHPで
- 8. 前の月曜日&前の日曜日の日付が
- 9. 月曜日のすべての日曜日をハイライト
- 10. 最後の3ヶ月の月曜日から日曜日の日付を取得する方法Redshiftで?
- 11. 月曜日から金曜日までの月曜日から日曜日までのリスト
- 12. 日曜日に月曜日を取得する
- 13. 金曜日のデータを月曜日に取得する
- 14. SQL:月曜日の金曜日の取得
- 15. 最後の月曜日は月曜日です
- 16. Cron式:月曜日の第3月曜日の第1金曜日
- 17. 日付計算 - すべての月曜日を取得
- 18. mysql week月曜日から日曜日
- 19. 毎月第1月曜日と第3月曜日の前日にAPSchedulerジョブを実行しています
- 20. 次の月曜日または木曜日にmoment.jsを取得する
- 21. SQL:日曜日に戻ってきた月曜日の返信
- 22. PHPの次の月曜日を取得
- 23. 月の第3金曜日を取得
- 24. 火曜日のベクトルを取得しますが、火曜日が休日の場合は、水曜日にR
- 25. Sql get Employee開始日(例:曜日、月曜日、火曜日など)の週の作業時間
- 26. 月曜日と金曜日の日付を来週から取得する
- 27. 入力が日付と週末の日(太陽、月、火、水曜、木曜、金曜または土曜)の場合、週末の日付を計算する方法
- 28. MaterialiseCSSからの入力に曜日(月曜日、火曜日など)を追加します
- 29. php一ヶ月のすべての日曜日の日付を取得する
- 30. 金曜のデータを取得する月曜日
いくつかのexaples(cte) 'http://bradsruminations.blogspot.ru/search?updated-max = 2011-10-04T12:57:00-07:00&max-results = 1''ステップバイステップの明瞭さ'トピック – DimaSUN
あなたの質問は参照日付を前提としています。今は世界の異なる場所で異なる日付を持つため、「前月」は異なる人々と異なる可能性があります。 'GETDATE()'はサーバのタイムゾーンを使います。これは今日の意味ですか?もし明日が変わるとどうなるでしょうか? –