簡體   English   中英

T-SQL如何從GetDate()獲得所有季度的第一周的星期數(ISO)?

[英]T-SQL How to get Week Number (ISO) of First Week from all Quarters from GetDate()?

標題說得非常多。

但是更確切地說,我需要從GetDate()獲取任何給定年份中第1-4季度開始的每周的周數。

不知道這是內置的東西還是我必須為其編寫函數。

謝謝!

這很簡單,但是可以解決問題。 您可以將@date設置為任何給定值。 我使用了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

對我來說,這返回了:

year        ISOWeekQ1   ISOWeekQ2   ISOWeekQ3   ISOWeekQ4
----------- ----------- ----------- ----------- -----------
2017        52          13          26          39

這也有效,並且不會對不同日期格式(例如yyyy / mm / dd)使用cast()或冒風險日期轉換錯誤:

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

該查詢的輸出與第一個查詢的輸出相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM