2015-07-01 25 views
0

獲得在SQL月份數字。這是我的如下如何通過將週數

CREATE FUNCTION getmonth 
(  

@startdate datetime,@Week int 
)   
RETURNS int   
AS   
BEGIN      
declare @year int,@Month int;    
declare @sdate [email protected];  
set @year= year(CAST(@startdate as date)); 
set @sdate = DATEADD(wk, DATEDIFF(wk, 6, '1/1/' + CAST(@year as varchar(4))) + (@Week-1) ,1);   
    SET @Month = month(@sdate);    
return @month   

END   

我只是希望這個函數返回的月份數時,我們通過一年一週開始的週數函數年的日期。

本週應在週日開始,週六結束。

對於在2015年,周的開始日期爲12/28/2014.When我們通過週數,它應該返回到2015年

+1

因此,對於給定的週數,您想知道哪一個月是該星期四? – Strawberry

回答

0

的月份數假設第1周開始於2015 - 01-01(或每年的1月1日),你正在使用MySQL。

此查詢將返回使用星期的月份數量。

select DATE_FORMAT(DATE_ADD('2015-01-01', INTERVAL 5 WEEK) ,'%m') 

這裏,2015-01-01開始日期。在INTERVAL 5 WEEK中,數字5是您將提供的週數

結果:02即一年的第二個月!

使用:

https://stackoverflow.com/a/11423781/3578289

http://www.w3schools.com/sql/func_date_format.asp

+1

你應該提到,你假設OP要在MySQL中這樣做,因爲上面的代碼只能在mysql中使用,而不能在sql服務器上使用 – ughai

0

現在選擇(),CURDATE(),CURTIME()

目前沒有任何一個月或當前周,但有一個查詢知道當前日期和時間。 使用下面顯示的示例查詢。

實施例: - CREATE TABLE得到月 ( getmonthId詮釋NOT NULL, 產品名稱VARCHAR(50)NOT NULL, getmonthDate日期時間NOT NULL DEFAULT NOW(), PRIMARY KEY(getmonthId) )

0

對於SQL Server 2005,可以使用DATEADD和DATEPART的組合。您可以輕鬆地將其摺疊爲單行代碼,但這樣可以更易於閱讀。

declare @startdate datetime 
    , @week int 
    , @enddate datetime 
    , @mo int 

select @startdate = '12/28/2014', @week = 23 
select @enddate = dateadd(wk, @week, @startdate) 
select @mo = datepart(m, @enddate) 

select @mo, @enddate