回答
你可以試試這個:
SELECT DATEPART(m,DATEADD(wk, DATEDIFF(wk, 6, '1/1/' + CAST(t.year as VARCHAR(4))) + (t.week-1), 6))
我同意這一點,雖然這周有一週的星期日開始,顯示第6周爲第1月而非第2天(2016-02-01 vs 2016-01-31) –
我收到此錯誤:轉換失敗當將varchar值'1/1 /'轉換爲數據類型int – ManiMuthuPandi
@ManiMuthuPandi哦它的一個整數列?現在試試吧,我已經加了'CAST' – sagi
這取決於你是如何分級的週數,例如,如果我們假設週數上週一開始,然後我們不得不說2016年的第1周實際上是從2015年12月28日星期一開始的,並於2016年1月3日星期日結束。如果這是您設置星期數的方式,那麼您可以使用下面的方法
樣本數據;
CREATE TABLE #DateTable (WeekNum int, YearNum int)
INSERT INTO #DateTable (WeekNum, YearNum)
VALUES
(1,2016)
,(2,2016)
,(3,2016)
,(4,2016)
,(5,2016)
,(6,2016)
,(7,2016)
然後我們將周和年轉換爲日期,然後將其轉換爲一個月;
SELECT
WeekNum
,YearNum
,DATEADD(wk, DATEDIFF(wk, 7, '1/1/' + CONVERT(varchar(4),YearNum)) + (WeekNum-1), 7) AS WeekStart
,DATEPART(mm,DATEADD(wk, DATEDIFF(wk, 7, '1/1/' + CONVERT(varchar(4),YearNum)) + (WeekNum-1), 7)) MonthNum
(編輯:更新源爲int)
給出了這些結果;
WeekNum YearNum WeekStart MonthNum
1 2016 2015-12-28 00:00:00.000 12
2 2016 2016-01-04 00:00:00.000 1
3 2016 2016-01-11 00:00:00.000 1
4 2016 2016-01-18 00:00:00.000 1
5 2016 2016-01-25 00:00:00.000 1
6 2016 2016-02-01 00:00:00.000 2
7 2016 2016-02-08 00:00:00.000 2
你可以試試下面的查詢:
SELECT
[Week],
[Year],
'Output-Month' = MONTH(DATEADD(WEEK, [Week], DATEADD(WEEK, DATEDIFF(WEEK, '19050101', '01/01/' + CAST([Year] AS VARCHAR(4))), '19050101')))
FROM YourTable
月1日是以此來獲得一年的第一天:
DATEADD(WEEK, DATEDIFF(WEEK, '19050101', '01/01/' + CAST([Year] AS VARCHAR(4))), '19050101')
第二是使用添加您的週數這個:
DATEADD(WEEK, [Week], 'From 1st result')
最後是ge使用MONTH函數設置Month的數量。
由於週數可能會在兩個不同的月份發生,因此您不能從週數到月份。例如,2016年1月31日和2016年2月1日均在第6周。
SELECT DATEPART(WEEK, '2016-01-31')
SELECT DATEPART(WEEK, '2016-02-01')
- 1. 使用月份日曆獲取選定星期的星期六日期值
- 2. 如何使用OUTPUT獲取身份列的值 - SQL服務器
- 3. 獲取特定年份的月份值
- 4. 如何在PHP中從服務器獲取月份?
- 5. 使用Jquery獲取日期和月份
- 6. 使用T-sql獲取本月的最後一個星期一
- 7. 如何獲取月份的月份發生日期
- 8. 從SQL服務器中使用XML類型字段獲取值
- 9. 如何在SQL服務器中獲取日月?
- 10. 獲取月份的第一個星期一和最後一個星期日,穿過月份邊界
- 11. 如何統計任意月份的星期數和星期幾
- 12. 如何獲取在datetimepicker中選擇日期的月份的星期幾?
- 13. 如何獲取月份的星期以及日期範圍在MYSQL
- 14. 如何在SQL中獲取月份的日期
- 15. SQL Server查詢獲得第二個星期四的月份
- 16. SQL服務器:獲取星期六作爲星期六的第一天的星期幾
- 17. SQL SSRS當月月份值匹配
- 18. 使用T-SQL獲取/設置服務器備份位置
- 19. 如何使用JodaTime獲取特定月份的最後日期?
- 20. 如何使用循環功能獲取日期月份
- 21. 如何獲得當前月份的星期數in.js
- 22. 獲取月份的第三個星期五
- 23. 例如,星期一離開月份
- 24. 獲取星期的開始和結束日期?在Sql服務器?
- 25. 以星期,星期數,月和年獲取日期
- 26. 從SQL獲取年份和月份
- 27. SQL服務器 - 使用以前行值
- 28. 如何從年,月,星期幾和星期幾獲取日期? C#
- 29. 按星期,月份,日期分組
- 30. SQL服務器獲得價值
您正在使用哪種版本的sql server? –
Microsoft SQL Server 2008 – ManiMuthuPandi
使用[DateAdd](https://technet.microsoft.com/en-us/library/ms186819(v = sql.110).aspx)函數! –