SQL DATE에서 월과 연도 만 가져 오기


답변:


170

: 제안은 이미 주어진 아니라, 다른 한 possiblity가 존재하는 한 나는 당신의 질문에서 추측 할 수
당신은 아직 날짜로 결과를 원하는 -
-하지만 당신은 '폐기'는 일, 시간 등 원하는
- 떠나 년 / 월 날짜 필드 만

SELECT
   DATEADD(MONTH, DATEDIFF(MONTH, 0, <dateField>), 0) AS [year_month_date_field]
FROM
   <your_table>

기본 날짜 (0)에서 전체 월 수를 가져온 다음 해당 기본 날짜에 추가합니다. 따라서 날짜가있는 달로 내림합니다.

참고 : SQL Server 2008에서는 여전히 TIME을 00 : 00 : 00.000으로 첨부합니다. 이것은 날짜와 시간을 모두 "제거"하는 것과 정확히 동일하지 않습니다. 또한 DAY가 첫 번째로 설정되었습니다. 예 : 2009-10-01 00 : 00 : 00.000


1
이것은 나를 위해 전혀 효과가 없었습니다. 결과적으로 2023-02-01 00 : 00 : 00.000이 표시됩니다.
Dss September

1
@ dss-어떤 매개 변수로? 실제 SQL을 보여 주시면 기쁩니다.
MatBailie

@MatBailie SELECT DATEADD (MONTH, DATEDIFF (MONTH, 0, LastSaleDate), 0) AS [year_month_date_field] FROM db1.products 여기서 productID = 123 "LastSaleDate"열은 "(날짜가 아니라 null)"로 선언되며 다음과 같이 표시됩니다. 2014-09-01 00 : 00 : 00.000
Dss September

1
@DSS-예, 맞습니다. 2014 년 9 월 초로 반올림됩니다. "년 및 월만"데이터 유형이 없으므로 매월 첫 번째 순간을 사용하는 것이 표준 관행입니다. 이 DATETIME 값을 문자열 (Aaplication Layer, Presentation Layer, Reporting Layer 등)로 변환 할 때는 연도 및 월 부분만으로 서식을 지정할 수 있습니다. 그러나 "데이터베이스 내"데이터 조작의 관점에서 이것은 정확합니다.
MatBailie

귀하의 답변이 "날짜"필드와 함께 사용되기 때문에 아마도 "날짜 시간"필드를 사용하고 있기 때문에 아마도 문제 일 것입니다.
Dss September

133
select month(dateField), year(dateField)

2
큰! 하나의 열에 연결할 수 있습니다 : 'select cast (month (dateField) as varchar) +'. ' + cast (year (dateField) as varchar) '
izik f


32
SELECT DATEPART(yy, DateVal)
SELECT DATEPART(MM, DateVal)
SELECT DATENAME(MM, DateVal)

2
SELECT DATEPART (MM, DateVal)가 'MM'을 반환하지 않습니다. 월이 1-9 사이 인 경우 한 자릿수를 반환합니다.
Jaikrat

"MM"대신 "month"라고 표시해야합니다. 'SELECT DATEPART (month, getdate ())'
Renne007

17
datename(m,column)+' '+cast(datepart(yyyy,column) as varchar) as MonthYear

결과는 다음과 같습니다. '2013 년 12 월'


15

이를 수행하는 두 가지 SQL 함수가 있습니다.

자세한 내용은 링크 된 설명서를 참조하십시오.


5
링크가 항상 영원히 유지되는 것은 아니기 때문에 적어도 몇 가지 간단한 예를 제시하는 것이 좋습니다. 사실 더 이상 좋지 않습니다.
Carol

12

이것도 도움이 될 수 있습니다.

SELECT YEAR(0), MONTH(0), DAY(0);

또는

SELECT YEAR(getdate()), MONTH(getdate()), DAY(getdate());

또는

SELECT YEAR(yourDateField), MONTH(yourDateField), DAY(yourDateField);

반환 필드에서 "0"을 제거하지 않겠습니까?
Si8

11

의는이 방법을 쓸 수 : YEAR(anySqlDate)MONTH(anySqlDate). YEAR(GETDATE())예를 들어 사용해보십시오 .


10
convert(varchar(7), <date_field>, 120)
because 120 results in 'yyyy-MM-dd' which is varchar(10)
using varchar(7) will display only year and month

example:
select convert(varchar(7), <date_field>, 120), COUNT(*)
from <some_table>
group by convert(varchar(7), <date_field>, 120)
order by 1

6

귀하의 질문을 두 가지 방식으로 해석하고 있습니다.

a) 당신은 달과 년만 별도로 필요합니다.

select 
        [YEAR] = YEAR(getdate())
        ,[YEAR] = DATEPART(YY,getdate())
        , [MONTH] = month(getdate())
        ,[MONTH] = DATEPART(mm,getdate())
        ,[MONTH NAME] = DATENAME(mm, getdate()) 

비)

당신은 주어진 날짜의 말에서 표시 할 '2009-11-24 09:01:55.483'에서 MONTH.YEAR의 형식입니다. 따라서 출력은 11.2009이 경우 와 같아야합니다 .

그것이 사실이라면, 이것을 시도하십시오 (다른 대안들 중에서)

select [Month.Year] = STUFF(CONVERT(varchar(10), GETDATE(),104),1,3,'')

5

기능을 지원 MS ACCESS하거나 RODBC지원하지 않는 데이터베이스 중 일부는 기능이있는 데이터베이스의 경우 다음과 같이 하면됩니다.SQL SERVERFORMAT

SELECT FORMAT(<your-date-field>,"YYYY-MM") AS year-date FROM <your-table>


3
CONCAT (datepart (yy,DATE), FORMAT (DATE,'MM')) 

6 자리 결과를 원하면 201601을 제공합니다.


2

이 시도

select to_char(DATEFIELD,'MON') from YOUR_TABLE

예.

select to_char(sysdate, 'MON') from dual

2

이 시도:

포르투갈 인

SELECT format(dateadd(month, 0, getdate()), 'MMMM', 'pt-pt') + ' ' + convert(varchar(10),year(getdate()),100)

결과 : maio 2019


영어

SELECT format(dateadd(month, 0, getdate()), 'MMMM', 'en-US') + ' ' + convert(varchar(10),year(getdate()),100)

결과 : 2019 년 5 월

다른 언어로 원하는 경우 링크에서 ' pt-pt '또는 ' en-US '를 이들 중 하나로 변경 하십시오.


1

나는 다음과 같이 할 수있는 월-년을 표시하는 비슷한 것을 수행 해야하는 특정 요구 사항이있었습니다.

SELECT DATENAME(month, GETDATE()) + '-' + CAST(YEAR(GETDATE()) AS nvarchar) AS 'Month-Year'

필자의 경우에는 2 자리 연도의 3 글자 약어로 다음과 같이 표시해야했습니다. SELECT LEFT(DATENAME(month, GETDATE()), 3) + '-' + CAST(RIGHT(YEAR(GETDATE()),2) AS nvarchar(2)) AS 'Month-Year'


1

시험 SELECT CONCAT(month(datefield), '.', year(datefield)) FROM YOURTABLE;


0

내 데이터베이스는 위의 대부분의 기능을 지원하지 않지만 이것이 작동한다는 것을 알았습니다.

SELECT * FROM table WHERE SUBSTR(datetime_column, starting_position, number_of_strings)=required_year_and_month;

예를 들면 다음과 같습니다. SELECT SUBSTR(created, 1,7) FROM table;

연도 및 월을 "yyyy-mm"형식으로 반환합니다.


0

날짜로부터 월 및 연도 가져 오기

DECLARE @lcMonth nvarchar(10)
DECLARE @lcYear nvarchar(10)

SET @lcYear=(SELECT  DATEPART(YEAR,@Date))
SET @lcMonth=(SELECT  DATEPART(MONTH,@Date))


0

검색어 :- Select datename(m,GETDATE())+'-'+cast(datepart(yyyy,GETDATE()) as varchar) as FieldName

출력 : 2019 년 1 월

우리가 사용할 수있는 일반적인 날짜

datename(m,<DateField>)+' '+cast(datepart(yyyy,<DateField>) as varchar) as FieldName


0
select convert(varchar(11), transfer_date, 106) 

2018 년 3 월 7 일 형식의 원하는 날짜 결과를 얻었습니다.

내 열 'transfer_date'는 날짜 시간 유형 열이며 Azure에서 SQL Server 2017을 사용하고 있습니다.


0

CONCAT (MONTH (GETDATE ()), '.', YEAR (GETDATE ()))를 선택하십시오.

출력 : 5.2020

CONCAT (DATENAME (MONTH, GETDATE ()), '.', YEAR (GETDATE ()))를 선택하십시오.

출력 : 2020 년 5 월

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.