월 이름 만 알고있는 달을 가져오고 싶습니다. (월 이름이 1 인 경우 1을 반환해야 함)월 번호 만 월 이름 만 전달하십시오
나는 이것을 시도했다.
SELECT DATEPART(MM,'january 01 2011')
하지만 여기서 전체 날짜 값 (2011 년 1 월 1 일)을 전달하고 싶습니다. 그러나 나는 단지 월 이름을 전달해야합니다. ('사례'를 사용하지 않음)
어떤 방법이 있습니까?
월 이름 만 알고있는 달을 가져오고 싶습니다. (월 이름이 1 인 경우 1을 반환해야 함)월 번호 만 월 이름 만 전달하십시오
나는 이것을 시도했다.
SELECT DATEPART(MM,'january 01 2011')
하지만 여기서 전체 날짜 값 (2011 년 1 월 1 일)을 전달하고 싶습니다. 그러나 나는 단지 월 이름을 전달해야합니다. ('사례'를 사용하지 않음)
어떤 방법이 있습니까?
이 같은 달에 이름을 전달하고 그것을 (어떤 다른 일 + 년 당신이 원하는 또는) 01 2011
를 추가 할 수 있습니다 :
@declare monthName varchar(20);
@set monthName = 'january';
SELECT DATEPART(MM,monthName+' 01 2011')
또는
이SELECT MONTH(monthName+' 01 2011')
여기도 1 년을 통과해야합니다. 달 이름 만 전달하면됩니다. – Tom
@Tom - 당신은 ** 단 하나의 변수 인'monthName'만을 전달합니다. –
'January'이라는 문자열을 전달했지만 실제로 코드를 실행하는 사용자가 다른 언어 설정 (예 :'SET LANGUAGE FRENCH;')을 시도하면 안전하지 않습니다. 걱정이된다면 달 테이블이 당신을 보호 할 수 있습니다. –
당신은 또한 사용할 수 있습니다 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
괜찮습니다. 하지만 나는 더 적은 수의 라인으로 솔루션을 찾고있다. (케이스를 사용하지 않고) – Tom
@declare monthName varchar(20);
@set monthName = 'JUNE';
SELECT DATEPART(MM,monthName+' 01 2014') //Monthname +'any date and year'
[Stay awa 게으른 속기에서부터] (http://sqlblog.com/blogs/aaron_bertrand/archive/2011/09/20/bad-habits-to-kick-using-shorthand-with-date-time-operations.aspx). 'MONTH'를 타이핑하고 코드를 스스로 문서화하여 부팅하는 것이 훨씬 더 오래 걸리나요? –