The title says it pritty much.
But to be more precise, I need to get the Week Number of each week first starting in Quarters 1-4 from any given year from GetDate().
Not sure if this is something that's built in or I have to write a function for.
Thanks!
This is simple, but does the trick. You would set @date
to any given value. I used getdate()
.
declare @date datetime = getdate()
declare @year int = datepart(year, @date)
select @year as [year]
,datepart(iso_week, cast('1/1/' + cast(@year as char(4)) as date)) as ISOWeekQ1
,datepart(iso_week, cast('4/1/' + cast(@year as char(4)) as date)) as ISOWeekQ2
,datepart(iso_week, cast('7/1/' + cast(@year as char(4)) as date)) as ISOWeekQ3
,datepart(iso_week, cast('10/1/' + cast(@year as char(4)) as date)) as ISOWeekQ4
For me, this returned:
year ISOWeekQ1 ISOWeekQ2 ISOWeekQ3 ISOWeekQ4
----------- ----------- ----------- ----------- -----------
2017 52 13 26 39
This also works, and doesn't use cast()
or risk date conversion errors for different formats of the date (eg, yyyy/mm/dd):
declare @date datetime = getdate()
set @date = dateadd(day, - datepart(dayofyear, @date) + 1, @date) -- sets date to Jan 1
select datepart(year, @date) [year]
,datepart(iso_week, @date) as ISOWeekQ1
,datepart(iso_week, dateadd(month, 3, @date)) as ISOWeekQ2
,datepart(iso_week, dateadd(month, 6, @date)) as ISOWeekQ3
,datepart(iso_week, dateadd(month, 9, @date)) as ISOWeekQ4
The output of this query is the same as the first.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.