SQL Server 쿼리에서 월 이름 반환


81

을 사용 SQL Server 2008하여보기를 만드는 데 사용되는 쿼리가 있고 정수 대신 월 이름 을 표시하려고합니다 .

내 데이터베이스에서는 datetime라는 열에 OrderDateTime있습니다. 날짜를 반환하는 쿼리의 줄은 다음과 같습니다.

DATENAME(yyyy, S0.OrderDateTime) AS OrderYear,
DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth

연도 열과 월 열을 정수로 반환합니다. 월 이름을 반환하고 싶습니다 (Jan, Feb, etc). 난 노력 했어:

CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth

이것은 분명히 잘못된 것입니다.

'AS'근처의 잘못된 구문

메시지. 내 쿼리에 적합한 구문은 무엇입니까?


8
잘못된 구문 메시지 인해 전에 최종 괄호 떨어져 폐쇄하지 않는 것입니다 AS-CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime)) AS OrderMonth
Jaymz

S0는 SQL 쿼리에서 무엇을 의미한다
user7157710

@ user7157710 S0은 필드가있는 테이블에 지정된 별칭입니다.
tia97

답변:


154

그러면 해당 월의 전체 이름이 표시됩니다.

select datename(month, S0.OrderDateTime)

처음 세 글자 만 원한다면 이것을 사용할 수 있습니다.

select convert(char(3), S0.OrderDateTime, 0)

"SQL 쿼리에서 S0은 무엇을 의미합니까?"라는 답변에 잘못 게시 된 댓글 에 의해 user7157710
페터 프리 버그

1
S0은 테이블의 별칭입니다. 대답은 질문에서 가져 오는 것입니다.
Bpainter 2017-06-26

추가하고 싶습니다. 일반적으로 이러한 기능을 사용하고 싶지도 않습니다. 날짜 (시간) 또는 월을 정수 등으로 선택한 다음 UI가 사람에게 친숙한 월 이름으로 '변환'하도록하는 것이 좋습니다. 이렇게하면 응용 프로그램 / UI가 사용자의 기본 설정이나 응용 프로그램의 현지화 설정에 대한 단서가 거의없는 데이터베이스가 아닌 현지화를 처리 할 수 ​​있습니다. 다른 말로하면 다음과 같이 생각해보십시오. 사용자가 2 월보다 중국 二月을 선호한다면 어떨까요?
RobIII

18

시도해 보셨습니까 DATENAME(MONTH, S0.OrderDateTime)?


12

변화:

CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth

에:

CONVERT(varchar(3), DATENAME(MONTH, S0.OrderDateTime)) AS OrderMonth

당신이 의미하는 것 같아요 DATENAME. DATEPART하지 않을 것입니다.
Druid




1

이것은 u가 요청하는 것을 제공합니다.

select convert(varchar(3),datename(month, S0.OrderDateTime)) 


0

db를 누르지 않고도 모든 달 이름을 가져올 수 있습니다.

WITH CTE_Sample1 AS
(
    Select 0 as MonthNumber

    UNION ALL

    select MonthNumber+1 FROM CTE_Sample1
        WHERE MonthNumber+1<12
)

Select DateName( month , DateAdd( month , MonthNumber ,0 ) ) from CTE_Sample1

0

기본적으로 이것은 ...

declare @currentdate datetime = getdate()
select left(datename(month,DATEADD(MONTH, -1, GETDATE())),3)
union all
select left(datename(month,(DATEADD(MONTH, -2, GETDATE()))),3)
union all
select left(datename(month,(DATEADD(MONTH, -3, GETDATE()))),3)

0
DECLARE @iMonth INT=12
SELECT CHOOSE(@iMonth,'JANUARY','FEBRUARY','MARCH','APRIL','MAY','JUNE','JULY','AUGUST','SEPTEMBER','OCTOBER','NOVEMBER','DECEMBER')
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.