T-SQL を使用して「今年の最初の月曜日」を見つけるにはどうすればよいですか?
11405 次
9 に答える
11
ngruson が投稿したリンクの例を次に示します ( http://sqlbump.blogspot.nl/2010/01/first-monday-of-year.html )。
DECLARE @Date datetime
DECLARE @Year int = 2012
SET @Date = DATEADD(YEAR, @Year - 1900, 0)
SELECT DATEADD(DAY, (@@DATEFIRST - DATEPART(WEEKDAY, @Date) +
(8 - @@DATEFIRST) * 2) % 7, @Date)
上記は以下を返します。
2012-01-02 00:00:00.000
于 2012-11-23T09:07:26.703 に答える
3
Here,
1) DATEPART function for finding day of week.
Here 1=sunday,2=monday,..,7=saturday.
2) first find out is 2(monday) in case when
condition then get same date,
3) if is sunday(1) then add 1 day and get next
day date is for monday,
4) if is not 2(monday) and greater then 2 then find
difference between lastday(7) and add 2 days ,
so we reach to monday date.
Here are you change year in @year variable. Ex:
DECLARE @Date datetime
DECLARE @Year int = 2012
set @Date= convert(varchar(4),@Year) + '-01-01'
select @Date,(case when DATEPART(DW,@Date)=2 then @Date
when DATEPART(DW,@Date)=1 then DATEADD(day,1,@Date)
else DATEADD(day,7-DATEPART(DW,@Date)+2,@Date)
end) as MondayDateis
于 2012-11-23T09:42:41.120 に答える
2
エレガントではありません;)
DECLARE @year DATETIME = '01 jan 2012'
SELECT [Day]
FROM
(
SELECT @year [Day] UNION ALL
SELECT DATEADD(DAY, 1, @year) UNION ALL
SELECT DATEADD(DAY, 2, @year) UNION ALL
SELECT DATEADD(DAY, 3, @year) UNION ALL
SELECT DATEADD(DAY, 4, @year) UNION ALL
SELECT DATEADD(DAY, 5, @year) UNION ALL
SELECT DATEADD(DAY, 6, @year)
) x
WHERE
DATENAME(DW, [Day]) = 'Monday'
于 2012-11-23T09:14:34.470 に答える
1
これを実現するための 1 つの例を次に示します。
http://sqlbump.blogspot.nl/2010/01/first-monday-of-year.html
于 2012-11-23T09:06:40.803 に答える
0
一部のデータを週ごとにグループ化し、各週の最初の日 (私の場合は日曜日) を表示する必要がありました。以下を使用して年の最初の日曜日を計算しました。次に、週番号を使用して、特定の日付が発生した週の開始を取得できます。
DECLARE @firstSundayThisYear DATE,
@jan1ThisYear DATE,
@currentYear INT;
SELECT @jan1ThisYear = '01-jan-' + CAST(DATEPART(YEAR, GETDATE()) AS VARCHAR(4)),
@currentYear = DATEPART(YEAR, GETDATE());
SET @firstSundayThisYear = DATEADD(DAY, -DATEPART(weekday, @jan1ThisYear) + 1, @jan1ThisYear);
PRINT @firstSundayThisYear
注: @firstSundayThisYear は、実際には昨年の日付である可能性がありますが、週数を掛けるとすべてうまくいきます。
于 2014-01-24T19:13:57.700 に答える