这是我的功能如下
CREATE FUNCTION getmonth
(
@startdate datetime,@Week int
)
RETURNS int
AS
BEGIN
declare @year int,@Month int;
declare @sdate datetime=@startdate;
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年,周开始日期为2014年12月28日。当我们通过周数时,它应该返回2015年的月份数。
答案 0 :(得分:0)
假设第一周从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
,即一年中的第二个月!
使用:
答案 1 :(得分:0)
选择now(),curdate(),curtime()
没有当前月份或当前周,但有查询知道当前日期和时间.. 使用下面显示的示例查询。
实施例: - CREATE TABLE getmonth ( getmonthId int NOT NULL, ProductName varchar(50)NOT NULL, getmonthDate datetime NOT NULL DEFAULT NOW(), 主键(getmonthId) )
答案 2 :(得分: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