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

Если предположить, что первая неделя начинается в 2015- 01-01 (или 1 января каждого года), и вы используете MySQL.

Этот запрос вернет номер месяца с использованием недели.

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

Здесь, в 2015-01-01 есть дата начала. В INTERVAL 5 WEEK номер 5 - номер недели, который вы укажете

Результат: 02 i.e второй месяц в году!

Использование:

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 getmonth ( getmonthId INT NOT NULL, ProductName VARCHAR (50) NOT NULL, getmonthDate DateTime NOT NULL-умолчанию(), ПЕРВИЧНЫЙ КЛЮЧ (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 
Смежные вопросы