获取仅传递月份名称的月份编号
Get month numbe passing only month name
当我只知道月份名称时,我想获取月份编号。
(如果月份名称 January 应该 return 1)
我试过了。
SELECT DATEPART(MM,'january 01 2011')
但在这里我想传递整个日期值(2011 年 1 月 1 日)。但我只需要传递月份名称。
(不使用 'Case')
有什么办法吗?
您可以传递月份名称并附加 01 2011
(或您希望的任何其他日期 + 年份),如下所示:
@declare monthName varchar(20);
@set monthName = 'january';
SELECT DATEPART(MM,monthName+' 01 2011')
或
SELECT MONTH(monthName+' 01 2011')
你也可以使用Case
DECLARE @month VARCHAR(15)='mar'
SELECT CASE @month
WHEN 'Jan' THEN 1
WHEN 'feb' THEN 2
WHEN 'mar' THEN 3
WHEN 'apr' THEN 4
WHEN 'may' THEN 5
WHEN 'jun' THEN 6
WHEN 'jul' THEN 7
WHEN 'aug' THEN 8
WHEN 'sep' THEN 9
WHEN 'oct' THEN 10
WHEN 'nov' THEN 11
WHEN 'dec' THEN 12
END
@declare monthName varchar(20);
@set monthName = 'JUNE';
SELECT DATEPART(MM,monthName+' 01 2014') //Monthname +'any date and year'
当我只知道月份名称时,我想获取月份编号。 (如果月份名称 January 应该 return 1)
我试过了。
SELECT DATEPART(MM,'january 01 2011')
但在这里我想传递整个日期值(2011 年 1 月 1 日)。但我只需要传递月份名称。 (不使用 'Case')
有什么办法吗?
您可以传递月份名称并附加 01 2011
(或您希望的任何其他日期 + 年份),如下所示:
@declare monthName varchar(20);
@set monthName = 'january';
SELECT DATEPART(MM,monthName+' 01 2011')
或
SELECT MONTH(monthName+' 01 2011')
你也可以使用Case
DECLARE @month VARCHAR(15)='mar'
SELECT CASE @month
WHEN 'Jan' THEN 1
WHEN 'feb' THEN 2
WHEN 'mar' THEN 3
WHEN 'apr' THEN 4
WHEN 'may' THEN 5
WHEN 'jun' THEN 6
WHEN 'jul' THEN 7
WHEN 'aug' THEN 8
WHEN 'sep' THEN 9
WHEN 'oct' THEN 10
WHEN 'nov' THEN 11
WHEN 'dec' THEN 12
END
@declare monthName varchar(20);
@set monthName = 'JUNE';
SELECT DATEPART(MM,monthName+' 01 2014') //Monthname +'any date and year'