DATEPART(Transact-SQL)
적용 대상: SQL Server Azure SQL 데이터베이스 Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW)
이 함수는 지정한 date의 지정한 datepart를 나타내는 정수를 반환합니다.
모든 Transact-SQL 날짜/시간 데이터 형식 및 함수에 대한 개요는 날짜 및 시간 데이터 형식 및 함수(Transact-SQL)를 참조하세요.
구문
DATEPART ( datepart , date )
인수
datepart
DATEPART
가 정수를 반환할 date 인수의 특정 부분입니다. 이 표에서는 올바른 datepart 인수가 모두 나열되어 있습니다.
참고
DATEPART
은 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
다음 데이터 형식 중 하나를 확인하는 식입니다.
- date
- datetime
- datetimeoffset
- datetime2
- smalldatetime
- time
date의 경우 DATEPART
은 열 식, 식, 문자열 리터럴 또는 사용자 정의 변수를 허용합니다. 모호성 문제를 피하려면 4자리 연도를 사용하세요. 두 자리 연도에 대한 정보는 두 자리 연도 구분 서버 구성 옵션 구성을 참조하세요.
반환 형식
int
Return Value
각 datepart와 해당 약어는 동일한 값을 반환합니다.
반환 값은 SET LANGUAGE 및 로그인의 기본 언어 구성 서버 구성 옵션을 사용하여 설정한 언어 환경에 따라 다릅니다. date가 특정 형식의 문자열 리터럴인 경우 반환 값은 SET DATEFORMAT에 따라 다릅니다. date가 날짜 또는 시간 데이터 형식의 열 식이면 SET DATEFORMAT은 반환 값을 변경하지 않습니다.
이 표에서는 SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10')
문에 대한 모든 datepart 인수 및 해당 반환 값을 보여 줍니다. date 인수에는 datetimeoffset(7) 데이터 형식이 있습니다. nanosecd datepart 반환 값의 마지막 두 위치는 항상 00
있으며 이 값의 배율은 9입니다.
.123456700
datepart | 반환 값 |
---|---|
year, yyyy, yy | 2007 |
quarter, qq, q | 4 |
month, mm, m | 10 |
dayofyear, dy, y | 303 |
day, dd, d | 30 |
week, wk, ww | 44 |
weekday, dw | 3 |
hour, hh | 12 |
minute, n | 15 |
second, ss, s | 32 |
millisecond, ms | 123 |
microsecond, mcs | 123456 |
nanosecond, ns | 123456700 |
tzoffset, tz | 310 |
iso_week, isowk, isoww | 44 |
week 및 weekday datepart 인수
week(wk, ww) 또는 weekday(dw) datepart의 경우 DATEPART
반환 값은 SET DATEFIRST로 설정된 값에 따라 달라집니다.
연도의 1월 1일은 주 날짜 부분의 시작 번호를 정의합니다. 다음은 그 예입니다.
DATEPART(wk, '1월 1일, xxxx') = 1
여기서 xxxx는 연도입니다.
이 표에는 각 SET DATEFIRST 인수에 대한 '2007-04-21'의 주 및 요일 날짜 파트 의 반환 값이 표시됩니다. 2007년 1월 1일은 월요일에 해당합니다. 2007년 4월 21일은 토요일에 해당합니다. 미국 영어
SET DATEFIRST 7 -- ( Sunday )
기본값으로 사용됩니다. DATEFIRST를 설정한 후 datepart 테이블 값에 대한 이 제안된 SQL 문을 사용합니다.
SELECT DATEPART(week, '2007-04-21 '), DATEPART(weekday, '2007-04-21 ')
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, MONTH, DAY 함수에서 반환하는 값과 동일합니다.
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
DATEPART
는 tzoffset(tz) 값을 분 수(부호 있음)로 반환합니다. 이 명령문은 310분의 표준 시간대 오프셋을 반환합니다.
SELECT DATEPART (tzoffset, '2007-05-10 00:00:01.1234567 +05:10');
DATEPART
는 tzoffset 값을 다음과 같이 렌더링합니다.
- datetimeoffset 및 datetime2에 대해 tzoffset은 시간 오프셋을 분 단위로 반환하며, datetime2의 오프셋은 항상 0분입니다.
- 암시적으로 datetimeoffset 또는 datetime2로 변환할 수 있는 데이터 형식의 경우
DATEPART
는 분으로 시간 오프셋을 반환합니다. 예외: 다른 날짜/시간 데이터 형식입니다. - 다른 모든 형식의 매개 변수는 오류가 있습니다.
smalldatetime date 인수
smalldatetime date 값에 대해 DATEPART
는 초를 00으로 반환합니다.
date 인수에 없는 datepart에 대해서는 기본값이 반환됨
date 인수 데이터 형식에 지정된 datepart가 없으면 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가 없으면 DATEPART
은 오류 9810을 반환합니다. 이 예제에서 변수 @t는 time 데이터 형식입니다. 날짜 부분 연도가 time 데이터 형식에 적합하지 않으므로 이 예제는 실패입니다.
DECLARE @t time = '12:10:30.123';
SELECT DATEPART(year, @t);
소수 자릿수 초
이러한 명령문은 DATEPART
가 소수 자릿수 초를 반환하는 것을 보여줍니다.
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
는 DATEADD는 SELECT 목록, WHERE, HAVING, GROUP BY 및 ORDER BY 절에서 사용할 수 있습니다.
DATEPART는 문자열 리터럴을 SQL Server 2008(10.0.x) 이상에서 datetime2 형식으로 암시적으로 캐스팅합니다. 즉 DATENAME은 데이터가 문자열로 전달될 때 형식 YDM을 지원하지 않습니다. YDM 형식을 사용하려면 문자열을 datetime 또는 smalldatetime 형식으로 명시적으로 캐스팅해야 합니다.
예
이 예에서는 기본 연도를 반환합니다. 기본 연도는 날짜 계산에 도움이 됩니다. 예제에서 숫자는 날짜를 지정합니다. SQL Server는 0을 1900년 1월 1일로 해석합니다.
SELECT DATEPART(year, 0), DATEPART(month, 0), DATEPART(day, 0);
-- Returns: 1900 1 1
이 예에서는 날짜 12/20/1974
의 일 부분을 반환합니다.
-- Uses AdventureWorks
SELECT TOP(1) DATEPART (day,'12/20/1974') FROM dbo.DimCustomer;
-- Returns: 20
이 예에서는 날짜 12/20/1974
의 년 부분을 반환합니다.
-- Uses AdventureWorks
SELECT TOP(1) DATEPART (year,'12/20/1974') FROM dbo.DimCustomer;
-- Returns: 1974