2015-07-01 26 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