2016-06-13 70 views
2

我想使用第一週獲取月份值。 我有一個星期的數字存儲在一個年份值的表格中。如何使用星期值sql服務器獲取月份值

enter image description here

如何查詢數據庫使用一週價值得到月份值。

我使用SQL

+0

您正在使用哪種版本的sql server? –

+0

Microsoft SQL Server 2008 – ManiMuthuPandi

+0

使用[DateAdd](https://technet.microsoft.com/en-us/library/ms186819(v = sql.110).aspx)函數! –

回答

2

你可以試試這個:

SELECT DATEPART(m,DATEADD(wk, DATEDIFF(wk, 6, '1/1/' + CAST(t.year as VARCHAR(4))) + (t.week-1), 6)) 
+0

我同意這一點,雖然這周有一週的星期日開始,顯示第6周爲第1月而非第2天(2016-02-01 vs 2016-01-31) –

+0

我收到此錯誤:轉換失敗當將varchar值'1/1 /'轉換爲數據類型int – ManiMuthuPandi

+0

@ManiMuthuPandi哦它的一個整數列?現在試試吧,我已經加了'CAST' – sagi

1

這取決於你是如何分級的週數,例如,如果我們假設週數上週一開始,然後我們不得不說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 
0

你可以試試下面的查詢:

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的數量。

0

由於週數可能會在兩個不同的月份發生,因此您不能從週數到月份。例如,2016年1月31日和2016年2月1日均在第6周。

SELECT DATEPART(WEEK, '2016-01-31') 
SELECT DATEPART(WEEK, '2016-02-01') 
相關問題