DATEPART(Transact-SQL)

지정된 date에서 특정 datepart를 나타내는 정수를 반환합니다.

모든 Transact-SQL 날짜/시간 데이터 형식 및 함수에 대한 개요는 날짜 및 시간 데이터 형식 및 함수(Transact-SQL)를 참조하십시오.

항목 링크 아이콘 Transact-SQL 구문 표기 규칙

구문

DATEPART ( datepart , date )

인수

  • datepart
    date(날짜 또는 시간 값)에서 integer가 반환되는 부분입니다. 다음 표에서는 올바른 모든 datepart 인수를 보여 줍니다. 해당하는 사용자 정의 변수는 사용할 수 없습니다.

    datepart

    약어

    year

    yy, yyyy

    quarter

    qq, q

    month

    mm, m

    dayofyear

    dy, y

    day

    dd, d

    week

    wk, ww

    weekday

    dw

    hour

    hh

    minute

    mi, n

    second

    ss, s

    millisecond

    ms

    microsecond

    mcs

    nanosecond

    ns

    TZoffset

    tz

    ISO_WEEK

    isowk, isoww

  • date
    time, date, smalldatetime, datetime, datetime2 또는 datetimeoffset 값으로 확인될 수 있는 식입니다. date는 식, 열 식, 사용자 정의 변수 또는 문자열 리터럴일 수 있습니다

    모호성을 피하려면 4자리 연도를 사용하십시오. 2자리 연도에 대한 자세한 내용은 two digit year cutoff 서버 구성 옵션 구성을 참조하십시오.

반환 형식

int

반환 값

각 datepart와 해당 약어는 동일한 값을 반환합니다.

반환 값은 SET LANGUAGE 및 로그인 default language 서버 구성 옵션 구성을 통해 설정된 언어 환경에 따라 다릅니다. date가 특정 형식에 대한 문자열 리터럴인 경우 반환 값은 SET DATEFORMAT을 사용하여 지정된 형식에 따라 달라집니다. date가 날짜 또는 시간 데이터 형식의 열 식이면 SET DATEFORMAT은 반환 값에 영향을 주지 않습니다.

다음 표에서는 SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10') 문에 대한 모든 datepart 인수 및 해당 반환 값을 보여 줍니다. date 인수의 데이터 형식은 datetimeoffset(7)입니다. nanosecond datepart 반환 값의 소수 자릿수는 9(.123456700)이며 마지막 두 자리는 항상 00입니다.

datepart

반환 값

year, yyyy, yy

2007

quarter, qq, q

4

month, mm, m

10

dayofyear, dy, y

303

day, dd, d

30

week, wk, ww

45

weekday, dw

1

hour, hh

12

minute, n

15

second, ss, s

32

millisecond, ms

123

microsecond, mcs

123456

nanosecond, ns

123456700

TZoffset, tz

310

week 및 weekday datepart 인수

datepart 가 week (wk, ww) 또는 weekday(dw)인 경우 반환 값은 SET DATEFIRST를 사용하여 설정된 값에 따라 달라집니다.

모든 해의 1월 1일은 week datepart의 시작 값을 정의합니다. 예를 들어 DATEPART (wk, 'Jan 1, xxxx') = 1에서 xxxx는 연도입니다.

다음 표에서는 각 SET DATEFIRST 인수의 '2007-04-21'에 대한 week 및 weekday datepart의 반환 값을 보여 줍니다. 2007년 1월 1일은 월요일입니다. 2007년 4월 21일은 토요일입니다. 미국 영어의 경우 SET DATEFIRST 7, 즉 일요일이 기본값입니다.

SET DATEFIRST

인수

week

반환

weekday

반환

1

16

6

2

17

5

3

17

4

4

17

3

5

17

2

6

17

1

7

16

7

year, month 및 day datepart 인수

DATEPART(year, date), DATEPART(month, date) 및 DATEPART (day, date)에 대해 반환되는 값은 각각 YEAR, MONTHDAY 함수에서 반환하는 값과 동일합니다.

ISO_WEEK datepart

ISO 8601에는 주 번호 매기기 시스템인 ISO 주-일 시스템이 포함됩니다. 각 주는 목요일이 포함되는 연도에 연결됩니다. 예를 들어 2004년의 첫 주(2004W01)는 2003년 12월 29일 월요일부터 2004년 1월 4일 일요일까지입니다. 1년의 가장 큰 주 번호는 52 또는 53입니다. 이러한 번호 매기기 스타일은 유럽 국가/지역에서 주로 사용되며 다른 국가에서는 거의 사용되지 않습니다.

다른 국가/지역의 번호 매기기 시스템은 ISO 표준을 따르지 않을 수도 있습니다. 가능한 값에는 다음 표와 같이 적어도 6가지가 있습니다.

시작 요일

연도의 첫째 주에 포함되는 항목

주가 두 번 할당됨

사용

일요일

1월 1일

첫 번째 토요일

한 해의 1-7일

미국

월요일

1월 1일

첫 번째 일요일

한 해의 1-7일

대부분의 유럽, 영국

월요일

1월 4일

첫 번째 목요일

한 해의 4-7일

아니요

ISO 8601, 노르웨이 및 스웨덴

월요일

1월 7일

첫 번째 월요일

한 해의 7일

아니요

수요일

1월 1일

첫 번째 화요일

한 해의 1-7일

토요일

1월 1일

첫 번째 금요일

한 해의 1-7일

TZoffset

TZoffset(tz)은 부호 있는 시간(분)으로 반환됩니다. 다음 문은 310분의 표준 시간대 오프셋을 반환합니다.

SELECT DATEPART (TZoffset, 2007-05-10  00:00:01.1234567 +05:10);

datepart 인수가 TZoffset(tz)이고 date 인수가 datetimeoffset 데이터 형식이 아니면 NULL이 반환됩니다.

smalldatetime date 인수

date가 smalldatetime이면 초는 00으로 반환됩니다.

date 인수에 없는 datepart에 대해서는 기본값이 반환됨

date 인수의 데이터 형식에 지정된 datepart가 없으면 date에 대해 리터럴이 지정된 경우에만 datepart의 기본값이 반환됩니다.

예를 들어 모든 date 데이터 형식의 년-월-일 기본값은 1900-01-01입니다. 다음 문은 datepart에 대한 날짜 부분 인수, date에 대한 시간 인수를 가지며 1900, 1, 1, 1, 2를 반환합니다.

SELECT DATEPART(year, '12:10:30.123')
    ,DATEPART(month, '12:10:30.123')
    ,DATEPART(day, '12:10:30.123')
    ,DATEPART(dayofyear, '12:10:30.123')
    ,DATEPART(weekday, '12:10:30.123');

date가 변수 또는 테이블 열로 지정되고 해당 변수 또는 열의 데이터 형식에 지정된 datepart가 없으면 오류 9810이 반환됩니다. 다음 코드 예는 날짜 부분 연도가 @t 변수로 선언된 time 데이터 형식에 유효하지 않기 때문에 실패합니다.

DECLARE @t time = '12:10:30.123'; 
SELECT DATEPART(year, @t); 

소수 자릿수 초

소수 자릿수 초는 다음 문과 같이 반환됩니다.

SELECT DATEPART(millisecond, '00:00:01.1234567'); -- Returns 123
SELECT DATEPART(microsecond, '00:00:01.1234567'); -- Returns 123456
SELECT DATEPART(nanosecond,  '00:00:01.1234567'); -- Returns 123456700

주의

DATEPART는 SELECT 목록, WHERE, HAVING, GROUP BY 및 ORDER BY 절에서 사용할 수 있습니다.

SQL Server 2012에서 DATEPART는 문자열 리터럴을 datetime2 형식으로 암시적으로 캐스팅합니다. 즉 DATEPART는 데이터가 문자열로 전달될 때 형식 YDM을 지원하지 않습니다. YDM 형식을 사용하려면 문자열을 datetime 또는 smalldatetime 형식으로 명시적으로 캐스팅해야 합니다.

다음 예에서는 기본 연도를 반환합니다. 기본 연도는 날짜 계산에 유용합니다. 예에서 날짜는 숫자로 지정됩니다. SQL Server는 0을 1900년 1월 1일로 해석합니다.

SELECT DATEPART(year, 0), DATEPART(month, 0), DATEPART(day, 0);
-- Returns: 1900    1    1 */

참고 항목

참조

CAST 및 CONVERT(Transact-SQL)