DATEPART(Transact-SQL)DATEPART (Transact-SQL)

적용 대상: 예SQL Server(2008부터) 예Azure SQL Database 예Azure SQL Data Warehouse 예병렬 데이터 웨어하우스 APPLIES TO: yesSQL Server (starting with 2008) yesAzure SQL Database yesAzure SQL Data Warehouse yesParallel Data Warehouse

이 함수는 지정한 date의 지정한 datepart를 나타내는 정수를 반환합니다.This function returns an integer representing the specified datepart of the specified date.

모든 Transact-SQLTransact-SQL의 날짜 및 시간 데이터 형식 및 함수에 대한 개요는 날짜 및 시간 데이터 형식 및 함수(Transact-SQL)을 참조하세요.See Date and Time Data Types and Functions (Transact-SQL) for an overview of all Transact-SQLTransact-SQL date and time data types and functions.

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax

DATEPART ( datepart , date )  

인수Arguments

datepartdatepart
DATEPART정수를 반환할 date 인수의 특정 부분입니다.The specific part of the date argument for which DATEPART will return an integer. 이 표에서는 올바른 datepart 인수가 모두 나열되어 있습니다.This table lists all valid datepart arguments.

참고

DATEPARTdatepart 인수에 해당하는 사용자 정의 변수 항목을 허용하지 않습니다.DATEPART does not accept user-defined variable equivalents for the datepart arguments.

datepartdatepart 약어Abbreviations
yearyear yy, yyyyyy, yyyy
quarterquarter qq, qqq, q
monthmonth mm, mmm, m
dayofyeardayofyear dy, ydy, y
dayday dd, ddd, d
weekweek wk, wwwk, ww
weekdayweekday dwdw
hourhour mhh
minuteminute mi, nmi, n
secondsecond ss, sss, s
millisecondmillisecond msms
microsecondmicrosecond mcsmcs
nanosecondnanosecond nsns
TZoffsetTZoffset tztz
ISO_WEEKISO_WEEK isowk, isowwisowk, isoww

datedate
다음 데이터 형식 중 하나를 확인하는 식입니다.An expression that resolves to one of the following data types:

  • datedate
  • datetimedatetime
  • datetimeoffsetdatetimeoffset
  • datetime2datetime2
  • smalldatetimesmalldatetime
  • timetime

date의 경우 DATEPART은 열 식, 식, 문자열 리터럴 또는 사용자 정의 변수를 허용합니다.For date, DATEPART will accept a column expression, expression, string literal, or user-defined variable. 모호성 문제를 피하려면 4자리 연도를 사용하세요.Use four-digit years to avoid ambiguity issues. 두 자리 연도에 대한 정보는 두 자리 연도 구분 서버 구성 옵션 구성을 참조하세요.See Configure the two digit year cutoff Server Configuration Option for information about two-digit years.

반환 형식Return Type

intint

반환 값Return Value

datepart와 해당 약어는 동일한 값을 반환합니다.Each datepart and its abbreviations return the same value.

반환 값은 SET LANGUAGE 및 로그인의 기본 언어 구성 서버 구성 옵션을 사용하여 설정한 언어 환경에 따라 다릅니다.The return value depends on the language environment set by using SET LANGUAGE, and by the Configure the default language Server Configuration Option of the login. date가 특정 형식의 문자열 리터럴인 경우 반환 값은 SET DATEFORMAT에 따라 다릅니다.The return value depends on SET DATEFORMAT if date is a string literal of some formats. date가 날짜 또는 시간 데이터 형식의 열 식이면 SET DATEFORMAT은 반환 값을 변경하지 않습니다.SET DATEFORMAT does not change the return value when the date is a column expression of a date or time data type.

이 표에서는 SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10') 문에 대한 모든 datepart 인수 및 해당 반환 값을 보여 줍니다.This table lists all datepart arguments, with corresponding return values, for the statement SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10'). date 인수에는 datetimeoffset(7) 데이터 형식이 있습니다.The date argument has a datetimeoffset(7) data type. nanosecond datepart 반환 값의 마지막 두 자리는 항상 00이며 이 값의 소수 자릿수는 9입니다.The last two positions of the nanosecond datepart return value are always 00 and this value has a scale of 9:

.123456700.123456700

datepartdatepart 반환 값Return value
year, yyyy, yyyear, yyyy, yy 20072007
quarter, qq, qquarter, qq, q 44
month, mm, mmonth, mm, m 1010
dayofyear, dy, ydayofyear, dy, y 303303
day, dd, dday, dd, d 3030
week, wk, wwweek, wk, ww 4545
weekday, dwweekday, dw 11
hour, hhhour, hh 1212
minute, nminute, n 1515
second, ss, ssecond, ss, s 3232
millisecond, msmillisecond, ms 123123
microsecond, mcsmicrosecond, mcs 123456123456
nanosecond, nsnanosecond, ns 123456700123456700
TZoffset, tzTZoffset, tz 310310

week 및 weekday datepart 인수Week and weekday datepart arguments

week(wk, ww) 또는 weekday(dw) datepart의 경우 DATEPART 반환 값은 SET DATEFIRST로 설정된 값에 따라 달라집니다.For a week (wk, ww) or weekday (dw) datepart, the DATEPART return value depends on the value set by SET DATEFIRST.

모든 해의 1월 1일은 weekdatepart_의 시작 값을 정의합니다.January 1 of any year defines the starting number for the week_datepart. 예를 들어 다음과 같이 사용할 수 있습니다.For example:

DATEPART(wk, '1월 1일, xxxx') = 1DATEPART (wk, 'Jan 1, xxxx') = 1

여기서 xxxx는 연도입니다.where xxxx is any year.

이 표에서는 weekweekday datepart에 대한 반환 값을 보여줍니다.This table shows the return value for the week and weekday datepart for

'2007-04-21''2007-04-21 '

각 SET DATEFIRST 인수에 대해.for each SET DATEFIRST argument. 2007년 1월 1일은 월요일에 해당합니다.January 1, 2007 falls on a Monday. 2007년 4월 21일은 토요일에 해당합니다.April 21, 2007 falls on a Saturday. 미국 영어For U.S. English,

SET DATEFIRST 7 -- (일요일)SET DATEFIRST 7 -- ( Sunday )

기본값으로 사용됩니다.serves as the default. DATEFIRST를 설정한 후 datepart 테이블 값에 대한 이 제안된 SQL 문을 사용합니다.After setting DATEFIRST, use this suggested SQL statement for the datepart table values:

SELECT DATEPART(week, '2007-04-21 '), DATEPART(weekday, '2007-04-21 ')

SET DATEFIRSTSET DATEFIRST

인수(argument)argument
weekweek

반환returned
weekdayweekday

반환returned
11 1616 66
22 1717 55
33 1717 44
44 1717 33
55 1717 22
66 1717 11
77 1616 77

year, month 및 day datepart 인수year, month, and day datepart Arguments

DATEPART(year, date), DATEPART(month, date) 및 DATEPART (day, date)에 대해 반환되는 값은 각각 YEAR, MONTH, DAY 함수에서 반환하는 값과 동일합니다.The values that are returned for DATEPART (year, date), DATEPART (month, date), and DATEPART (day, date) are the same as those returned by the functions YEAR, MONTH, and DAY, respectively.

ISO_WEEK datepartISO_WEEK datepart

ISO 8601에는 주 번호 매기기 시스템인 ISO 주-일 시스템이 포함됩니다.ISO 8601 includes the ISO week-date system, a numbering system for weeks. 각 주는 목요일이 포함되는 연도에 연결됩니다.Each week is associated with the year in which Thursday occurs. 예를 들어 2004년의 첫 주(2004W01)는 2003년 12월 29일 월요일부터 2004년 1월 4일 일요일까지입니다.For example, week 1 of 2004 (2004W01) covered Monday, 29 December 2003 to Sunday, 4 January 2004. 유럽 국가/지역은 일반적으로 이 번호 매기기 스타일을 사용합니다.European countries / regions typically use this style of numbering. 비유럽 국가/지역 일반적으로 이를 사용하지 않습니다.Non-European countries / regions typically do not use it.

참고: 1년에 가장 많은 주는 52주나 53주일 수 있습니다.Note: the highest week number in a year could be either 52 or 53.

다른 국가/지역의 번호 매기기 시스템은 ISO 표준을 따르지 않을 수 있습니다.The numbering systems of different countries/regions might not comply with the ISO standard. 이 표에서는 6가지 가능성을 보여 줍니다.This table shows six possibilities:

시작 요일First day of week 연도의 첫째 주에 포함되는 항목First week of year contains 주가 두 번 할당됨Weeks assigned two times 사용Used by/in
일요일Sunday 1월 1일1 January,

첫 번째 토요일First Saturday,

한 해의 1-7일1–7 days of year
사용자 계정 컨트롤Yes United StatesUnited States
월요일Monday 1월 1일1 January,

첫 번째 일요일First Sunday,

한 해의 1-7일1–7 days of year
사용자 계정 컨트롤Yes 대부분의 유럽, 영국Most of Europe and the United Kingdom
월요일Monday 1월 4일,4 January,

첫 번째 목요일First Thursday,

한 해의 4-7일4–7 days of year
아니오No ISO 8601, 노르웨이 및 스웨덴ISO 8601, Norway, and Sweden
월요일Monday 1월 7일,7 January,

첫 번째 월요일First Monday,

한 해의 7일7 days of year
아니오No
수요일Wednesday 1월 1일1 January,

첫 번째 화요일First Tuesday,

한 해의 1-7일1–7 days of year
사용자 계정 컨트롤Yes
토요일Saturday 1월 1일1 January,

첫 번째 금요일First Friday,

한 해의 1-7일1–7 days of year
사용자 계정 컨트롤Yes

TZoffsetTZoffset

DATEPARTTZoffset(tz) 값을 분 수(부호 있음)로 반환합니다.DATEPART returns the TZoffset (tz) value as the number of minutes (signed). 이 명령문은 310분의 표준 시간대 오프셋을 반환합니다.This statement returns a time zone offset of 310 minutes:

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

DATEPART는 TZoffset 값을 다음과 같이 렌더링합니다.DATEPART renders the TZoffset value as follows:

  • Datetimeoffset 및 datetime2에 대해 datetime2의 오프셋은 항상 0분이 경우 TZoffset은 시간 오프셋을 분으로 반환합니다.For datetimeoffset and datetime2, TZoffset returns the time offset in minutes, where the offset for datetime2 is always 0 minutes.
  • 암시적으로 datetimeoffset 또는 datetime2로 변환할 수 있는 데이터 형식의 경우 DATEPART는 분으로 시간 오프셋을 반환합니다.For data types that can implicitly convert to datetimeoffset or datetime2, DATEPART returns the time offset in minutes. 예외: 다른 날짜/시간 데이터 형식입니다.Exception: other date / time data types.
  • 다른 모든 형식의 매개 변수는 오류가 있습니다.Parameters of all other types result in an error.

smalldatetime date 인수smalldatetime date Argument

smalldatetime date 값의 경우 DATEPART는 00으로 초를 반환합니다.For a smalldatetime date value, DATEPART returns seconds as 00.

date 인수에 없는 datepart에 대해서는 기본값이 반환됨Default Returned for a datepart That Is Not in a date Argument

date 인수 데이터 형식에 지정된 datepart가 없으면 DATEPARTdate에 대해 리터럴이 지정된 경우에만 해당 datepart의 기본값을 반환합니다.If the date argument data type does not have the specified datepart, DATEPART will return the default for that datepart only when a literal is specified for date.

예를 들어 모든 date 데이터 형식의 년-월-일 기본값은 1900-01-01입니다.For example, the default year-month-day for any date data type is 1900-01-01. 다음 명령문은 datepart에 대한 날짜 부분 인수, date에 대한 시간 인수를 가지며 1900, 1, 1, 1, 2를 반환합니다.This statement has date part arguments for datepart, a time argument for date, and it returns 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가 없으면 DATEPART은 오류 9810을 반환합니다.If date is specified as a variable or table column, and the data type for that variable or column does not have the specified datepart, DATEPART will return error 9810. 이 예제에서 변수 @t에는 time 데이터 형식이 있습니다.In this example, variable @t has a time data type. 날짜 부분 연도가 time 데이터 형식에 적합하지 않으므로 이 예제는 실패입니다.The example fails because the date part year is invalid for the time data type:

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

소수 자릿수 초Fractional seconds

이러한 명령문은 DATEPART가 소수 자릿수 초를 반환하는 것을 보여줍니다.These statements show that DATEPART returns fractional seconds:

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  

RemarksRemarks

DATEPART는 DATEADD는 SELECT 목록, WHERE, HAVING, GROUP BY 및 ORDER BY 절에서 사용할 수 있습니다.DATEPART can be used in the select list, WHERE, HAVING, GROUP BY, and ORDER BY clauses.

DATEPART는 문자열 리터럴을 SQL Server 2017SQL Server 2017에서 datetime2 형식으로 암시적으로 캐스팅합니다.DATEPART implicitly casts string literals as a datetime2 type in SQL Server 2017SQL Server 2017. 즉 DATENAME은 데이터가 문자열로 전달될 때 형식 YDM을 지원하지 않습니다.This means that DATENAME does not support the format YDM when the date is passed as a string. YDM 형식을 사용하려면 문자열을 datetime 또는 smalldatetime 형식으로 명시적으로 캐스팅해야 합니다.You must explicitly cast the string to a datetime or smalldatetime type to use the YDM format.

Examples

이 예에서는 기본 연도를 반환합니다.This example returns the base year. 기본 연도는 날짜 계산에 도움이 됩니다.The base year helps with date calculations. 예제에서 숫자는 날짜를 지정합니다.In the example, a number specifies the date. SQL ServerSQL Server는 0을 1900년 1월 1일로 해석합니다.Notice that SQL ServerSQL Server interprets 0 as January 1, 1900.

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

이 예에서는 날짜 12/20/1974의 일 부분을 반환합니다.This example returns the day part of the date 12/20/1974.

-- Uses AdventureWorks  

SELECT TOP(1) DATEPART (day,'12/20/1974') FROM dbo.DimCustomer;  

결과 집합은 다음과 같습니다.Here is the result set.

--------
20

이 예에서는 날짜 12/20/1974의 년 부분을 반환합니다.This example returns the year part of the date 12/20/1974.

-- Uses AdventureWorks  

SELECT TOP(1) DATEPART (year,'12/20/1974') FROM dbo.DimCustomer;  

결과 집합은 다음과 같습니다.Here is the result set.

--------
1974

관련 항목:See also

CAST 및 CONVERT(Transact-SQL)CAST and CONVERT (Transact-SQL)