如何在T-SQL中獲取本月最後一個星期五的日期?sql server中給定月份的最後一個星期五
我將通過年份和月份作爲參數,例如201211. 如果我通過'201211'作爲參數,它應該返回我'20121130'作爲答案,因爲它是11月12日的最後一個星期五的日期。
如何在T-SQL中獲取本月最後一個星期五的日期?sql server中給定月份的最後一個星期五
我將通過年份和月份作爲參數,例如201211. 如果我通過'201211'作爲參數,它應該返回我'20121130'作爲答案,因爲它是11月12日的最後一個星期五的日期。
1900年1月5日是星期五。這將使用該基準日期並計算任意給定月份的上個星期五,儘管您必須在月份中給出日期而不僅僅是月份本身。帶有日期在一個月替換這個2012-12-01
SELECT DATEADD(DY,DATEDIFF(DY,'1900-01-05',DATEADD(MM,DATEDIFF(MM,0,'2012-12-01'),30))/7*7,'1900-01-05')
您也可以使用此通過更換1900-01-05
WITH 1900-01-06
等
獲得的最後一個星期六這將是使用calendar table簡單得多;創建你自己的需要適當的列後,你可以這樣寫:
select
max([Date])
from
dbo.Calendar
where
YearAndMonth = 201211 and
DayOfWeek = 'Friday'
日曆表一般是確定的日期比使用功能的更好的解決方案,因爲代碼是更具可讀性,你可以使用自己的諸如WeekNumber
,FinancialQuarter
之類的東西的定義在國家甚至公司之間差別很大。
非常好的解決方案,我測試了所有的情況,它的工作原理 –
如果用戶的語言不是英語,這很容易通過將'5-Jan-1900'改爲'19000105'解決。但是依靠代碼中的'魔術'數字和日期是一種相當可疑的做法,因爲任何讀代碼的人都不明白他們的真正含義。特別是如果原始程序員不留下任何評論,維護這樣的代碼可能會非常困難。 – Pondlife
你在跟蹤我嗎? :-) –