날짜 함수
날짜는 많은 데이터 원본에서 공통 요소입니다. 필드에 식별 가능한 날짜가 포함되어 있으면 날짜 또는 날짜 시간 데이터 유형이 사용됩니다. 비주얼리제이션에서 날짜 필드를 사용하면 자동 날짜 계층 구조 드릴다운, 날짜별 필터 옵션, 특수 날짜 서식 옵션 등 특별한 기능 집합을 사용할 수 있습니다. 계산에 날짜를 사용하려면 날짜 관련 함수를 사용해야 하는 경우가 많습니다.
다른 날짜 개념 숙지
날짜 함수는 date_part
인수, 선택적 [start_of_week]
매개 변수 및 날짜 리터럴(#)을 비롯한 날짜 관련 요소를 참조하는 경우가 있습니다. 이러한 내용은 이 항목의 끝 부분에서 자세히 다룹니다.
날짜 함수에 속하지 않지만 관심을 가질 만한 다음 몇 가지 항목도 참조하십시오.
- 비주얼리제이션에서 날짜를 표시하는 서식 지정: 사용자 지정 날짜 형식
- 기본 날짜 속성 설정: 데이터 원본의 날짜 속성
- 회계 날짜를 사용한 작업: 회계 날짜
- ISO-8601 달력 사용: ISO-8601 주 단위 달력
팁: 필드가 이미 날짜로 인식되어 있고(데이터 패널에 날짜 아이콘이 있음) 비주얼리제이션에 표시되는 방식을 제어하려고 하는 경우
날짜 함수를 사용하는 대신 서식을 지정해야 할 수도 있습니다. 날짜 필드를 사용한 작업에 대한 관련 항목 및 사용자 지정 날짜 형식을 참조하십시오. 이 페이지에서 날짜 함수를 사용하면 표시 형식을 설정하는 것이 아니라 계산된 날짜 필드를 조작할 수 있습니다.
Tableau에서 사용할 수 있는 날짜 함수
DATE
인식할 수 있는 형식의 문자열 및 숫자 식을 날짜로 변경하는 형식 변환 함수입니다.
구문 | DATE(expression) |
출력 | 날짜 |
정의 | 숫자, 문자열 또는 날짜 <expression> 이 주어진 날짜를 반환합니다. |
예 | DATE([Employee Start Date]) DATE("September 22, 2018") DATE("9/22/2018") DATE(#2018-09-22 14:52#) |
참고 |
|
DATEADD
시작 날짜에 지정된 수의 날짜 부분(월, 일 등)을 추가합니다.
구문 | DATEADD(date_part, interval, date) |
출력 | 날짜 |
정의 | 지정된 숫자의 <interval> 을 해당 날짜의 지정된 <date_part> 에 더해 <date> 를 반환합니다. 예를 들어 시작 날짜에 3개월 또는 12일을 추가합니다. |
예 | 모든 만기 날짜를 1주일 단위로 푸시 DATEADD('week', 1, [due date]) 날짜 2021년 2월 20일에 280일을 더하기 DATEADD('day', 280, #2/20/21#) = #November 27, 2021# |
참고 | ISO 8601 날짜를 지원합니다. |
DATEDIFF
두 날짜 사이의 날짜 부분(주, 년 등) 수를 반환합니다.
구문 | DATEDIFF(date_part, date1, date2, [start_of_week]) |
출력 | 정수 |
정의 | <date_part> 단위로 표시된 <date1> 과 <date2> 의 차이를 반환합니다. 예를 들어 누군가가 밴드를 가입하고 탈퇴한 날짜를 빼면 해당 밴드 체류 기간을 확인할 수 있습니다. |
예 | 1986년 3월 25일과 2021년 2월 20일 사이의 일 수 DATEDIFF('day', #3/25/1986#, #2/20/2021#) = 12,751 밴드 체류 개월 수 DATEDIFF('month', [date joined band], [date left band]) |
참고 | ISO 8601 날짜를 지원합니다. |
DATENAME
지정된 날짜 부분의 이름을 불연속형 문자열로 반환합니다.
구문 | DATENAME(date_part, date, [start_of_week]) |
출력 | 문자열 |
정의 | <date> 의 <date_part> 를 문자열로 반환합니다. |
예 | DATENAME('year', #3/25/1986#) = "1986" DATENAME('month', #1986-03-25#) = "March" |
참고 | ISO 8601 날짜를 지원합니다. 매우 유사한 계산은 DATEPART이며, 이 계산에서는 지정된 날짜 부분의 값을 연속형 정수로 반환합니다. 계산 결과의 특성(차원 또는 측정값, 연속형 또는 불연속형)과 날짜 형식을 변경하면 역함수는 DATEPARSE이며, 문자열 값을 가져와 날짜 형식으로 지정합니다. |
DATEPARSE
특정 형식의 문자열을 날짜로 반환합니다.
구문 | DATEPARSE(date_format, date_string) |
출력 | 날짜 |
정의 | <date_format> 인수는 <date_string> 필드가 정렬되는 방식을 설명합니다. 문자열 필드를 정렬할 수 있는 방법이 다양하므로 <date_format> 이 정확히 일치해야 합니다. 이에 대한 전체 설명과 형식 세부 정보는 필드를 날짜 필드로 변환(링크가 새 창에서 열림)을 참조하십시오. |
예 | DATEPARSE('yyyy-MM-dd', "1986-03-25") = #March 25, 1986# |
참고 |
날짜를 구분하고 해당 부분 값을 반환하는 역함수는 |
데이터베이스 제한 사항 |
|
DATEPART
지정된 날짜 부분의 이름을 정수로 반환합니다.
구문 | DATEPART(date_part, date, [start_of_week]) |
출력 | 정수 |
정의 | <date> 의 <date_part> 를 정수로 반환합니다. |
예 | DATEPART('year', #1986-03-25#) = 1986 DATEPART('month', #1986-03-25#) = 3 |
참고 | ISO 8601 날짜를 지원합니다. 매우 유사한 계산은 역함수는 |
DATETRUNC
이 함수는 날짜 반올림이라고 할 수 있습니다. 특정 날짜를 사용하여 원하는 특이성으로 해당 날짜의 버전을 반환합니다. 모든 날짜에는 일, 월, 분기 및 연도 값이 있어야 하므로 DATETRUNC
는 이 값을 지정된 날짜 부분까지 각 날짜 부분에 대해 가장 낮은 값으로 설정합니다. 자세한 내용은 예를 참조하십시오.
구문 | DATETRUNC(date_part, date, [start_of_week]) |
출력 | 날짜 |
정의 | <date> 를 <date_part> 에 지정된 정확도에 따라 잘라냅니다. 이 함수는 새 날짜를 반환합니다. 예를 들어 월 수준에서 월의 가운데에 있는 날짜를 잘라내면 이 함수는 월의 첫째 날을 반환합니다. |
예 | DATETRUNC('day', #9/22/2018#) = #9/22/2018# DATETRUNC('iso-week', #9/22/2018#) = #9/17/2018# (9/22/2018을 포함하는 주의 월요일) DATETRUNC(quarter, #9/22/2018#) = #7/1/2018# (9/22/2018을 포함하는 분기의 첫째 날) 참고: 주 및 ISO 주의 경우 |
참고 | ISO 8601 날짜를 지원합니다. 예를 들어 비주얼리제이션의 날짜/시간 필드에 시간 표시를 중지하기 위해 예를 들어, |
DAY
특정 월의 일자(1~31)를 정수로 반환합니다.
구문 | DAY(date) |
출력 | 정수 |
정의 | 주어진 <date> 의 일을 정수로 반환합니다. |
예 | Day(#September 22, 2018#) = 22 |
참고 | WEEK , MONTH , QUARTER , YEAR 및 해당 ISO 날짜도 참조하십시오. |
ISDATE
문자열이 유효한 날짜 형식인지 확인합니다.
구문 | ISDATE(string) |
출력 | 부울 |
정의 | 주어진 <string> 이 유효한 날짜이면 true를 반환합니다. |
예 | ISDATE(09/22/2018) = true ISDATE(22SEP18) = false |
참고 | 필수 인수는 문자열이어야 합니다. 날짜 데이터 유형이 있는 필드에는 ISDATE를 사용할 수 없습니다. 계산 시 오류가 반환됩니다. |
ISOQUARTER
구문 | ISOQUARTER(date) |
출력 | 정수 |
정의 | 주어진 <date> 의 ISO8601 주 기반 분기를 정수로 반환합니다. |
예 | ISOQUARTER(#1986-03-25#) = 1 |
참고 | ISOWEEK , ISOWEEKDAY , ISOYEAR 및 해당 ISO 이외의 날짜도 참조하십시오. |
ISOWEEK
구문 | ISOWEEK(date) |
출력 | 정수 |
정의 | 주어진 <date> 의 ISO8601 주 기반 주를 정수로 반환합니다. |
예 | ISOWEEK(#1986-03-25#) = 13 |
참고 | ISOWEEKDAY , ISOQUARTER , ISOYEAR 및 해당 ISO 이외의 날짜도 참조하십시오. |
ISOWEEKDAY
구문 | ISOWEEKDAY(date) |
출력 | 정수 |
정의 | 주어진 <date> 의 ISO8601 주 기반 요일을 정수로 반환합니다. |
예 | ISOWEEKDAY(#1986-03-25#) = 2 |
참고 | ISOWEEK , ISOQUARTER , ISOYEAR 및 해당 ISO 이외의 날짜도 참조하십시오. |
ISOYEAR
구문 | ISOYEAR(date) |
출력 | 정수 |
정의 | 주어진 <date> 의 ISO8601 주 기반 연도를 정수로 반환합니다. |
예 | ISOYEAR(#1986-03-25#) = 1,986 |
참고 | ISOWEEK , ISOWEEKDAY , ISOQUARTER 및 해당 ISO 이외의 날짜도 참조하십시오. |
MAKEDATE
구문 | MAKEDATE(year, month, day) |
출력 | 날짜 |
정의 | 지정된 <year> , <month> 및 <day> 로 구성된 날짜 값을 반환합니다. |
예 | MAKEDATE(1986,3,25) = #1986-03-25# |
참고 | 참고: 값을 잘못 입력하면 4월 31일이 없다는 오류를 반환하는 대신 Tableau 데이터 추출에 사용할 수 있습니다. 다른 데이터 원본에서는 사용 가능한지 확인해야 합니다.
|
MAKEDATETIME
구문 | MAKEDATETIME(date, time) |
출력 | 날짜/시간 |
정의 | <date> 및 <time> 을 결합하는 날짜/시간을 반환합니다. 날짜는 날짜, 날짜/시간 또는 문자열 유형일 수 있습니다. 시간은 날짜/시간이어야 합니다. |
예 | MAKEDATETIME("1899-12-30", #07:59:00#) = #12/30/1899 7:59:00 AM# MAKEDATETIME([Date], [Time]) = #1/1/2001 6:00:00 AM# |
참고 | 이 함수는 MySQL 호환 연결에만 사용할 수 있습니다(Tableau에서는 MySQL 및 Amazon Aurora).
|
MAKETIME
구문 | MAKETIME(hour, minute, second) |
출력 | 날짜/시간 |
정의 | 지정된 <hour> , <minute> 및 <second> 로 구성된 날짜 값을 반환합니다. |
예 | MAKETIME(14, 52, 40) = #1/1/1899 14:52:40# |
참고 | Tableau는 시간 데이터 유형을 지원하지 않고 날짜/시간만 지원하므로 출력은 날짜/시간입니다. 필드의 날짜 부분은 1/1/1899입니다.
|
MAX
구문 | MAX(expression) 또는 MAX(expr1, expr2) |
출력 | 인수와 동일한 데이터 유형이거나, 인수의 일부가 null인 경우 NULL 값이 출력됩니다. |
정의 | 두 인수의 최대값을 반환합니다(두 인수가 동일한 데이터 유형이어야 함).
|
예 | MAX(4,7) = 7 |
참고 | 문자열의 경우
데이터베이스 데이터 원본의 경우 날짜의 경우 날짜의 경우 집계 형식
비교 형식
|
MIN
구문 | MIN(expression) 또는 MIN(expr1, expr2) |
출력 | 인수와 동일한 데이터 유형이거나, 인수의 일부가 null인 경우 NULL 값이 출력됩니다. |
정의 | 두 인수의 최소값을 반환합니다(두 인수가 동일한 데이터 유형이어야 함).
|
예 | MIN(4,7) = 4 |
참고 | 문자열의 경우
데이터베이스 데이터 원본의 경우 날짜의 경우 날짜의 경우 집계 형식
비교 형식
|
MONTH
구문 | MONTH(date) |
출력 | 정수 |
정의 | 주어진 <date> 의 월을 정수로 반환합니다. |
예 | MONTH(#1986-03-25#) = 3 |
참고 | DAY , WEEK , QUARTER , YEAR 및 해당 ISO 날짜도 참조하십시오. |
NOW
구문 | NOW() |
출력 | 날짜/시간 |
정의 | 현재 로컬 시스템 날짜 및 시간을 반환합니다. |
예 | NOW() = 1986-03-25 1:08:21 PM |
참고 |
날짜/시간 대신 날짜를 반환하는 유사한 계산인 데이터 원본이 라이브 연결인 경우 시스템 날짜 및 시간이 다른 시간대에 있을 수 있습니다. 이 문제를 해결하는 방법에 대한 자세한 내용은 기술 자료를 참조하십시오. |
QUARTER
구문 | QUARTER(date) |
출력 | 정수 |
정의 | 주어진 <date> 의 분기를 정수로 반환합니다. |
예 | QUARTER(#1986-03-25#) = 1 |
참고 | DAY , WEEK , MONTH , YEAR 및 해당 ISO 날짜도 참조하십시오. |
TODAY
구문 | TODAY() |
출력 | 날짜 |
정의 | 현재 로컬 시스템 날짜를 반환합니다. |
예 | TODAY() = 1986-03-25 |
참고 |
날짜 대신 날짜/시간을 반환하는 유사한 계산인 NOW도 참조하십시오. 데이터 원본이 라이브 연결인 경우 시스템 날짜가 다른 시간대에 있을 수 있습니다. 이 문제를 해결하는 방법에 대한 자세한 내용은 기술 자료를 참조하십시오. |
WEEK
구문 | WEEK(date) |
출력 | 정수 |
정의 | 주어진 <date> 의 주를 정수로 반환합니다. |
예 | WEEK(#1986-03-25#) = 13 |
참고 | DAY , MONTH , QUARTER , YEAR 및 해당 ISO 날짜도 참조하십시오. |
YEAR
구문 | YEAR(date) |
출력 | 정수 |
정의 | 주어진 <date> 의 년을 정수로 반환합니다. |
예 | YEAR(#1986-03-25#) = 1,986 |
참고 | DAY , WEEK , MONTH , QUARTER 및 해당 ISO 날짜도 참조하십시오. |
date_part
Tableau의 수많은 날짜 함수는 일, 주, 분기 등과 같이 고려해야 할 날짜 부분을 함수에 알려주는 문자열 상수인 date_part
인수를 사용합니다. 사용할 수 있는 올바른 date_part
값은 다음과 같습니다.
date_part | 값 |
---|---|
'year' | 4자리 연도 |
'quarter' | 1-4 |
'month' | 1-12 또는 "1월", "2월" 등 |
'dayofyear' | 일년 중 몇째 날. 1월 1일은 1, 2월 1일은 32 등으로 계산됩니다. |
'day' | 1-31 |
'weekday' | 1-7 또는 "일요일", "월요일" 등 |
'week' | 1-52 |
'hour' | 0-23 |
'minute' | 0-59 |
'second' | 0-60 |
'iso-year' | 4자리 ISO 8601 연도 |
'iso-quarter' | 1-4 |
'iso-week' | 1-52, 주의 시작은 항상 월요일 |
'iso-weekday' | 1-7, 주의 시작은 항상 월요일 |
[start_of_week]
매개 변수
일부 함수에는 선택적 매개 변수 [start_of_week]
가 있습니다. start_of_week
매개 변수는 "일요일" 또는 "월요일"과 같이 주의 첫번째 요일로 간주되는 요일을 지정하는 데 사용할 수 있습니다. 생략되면 주의 시작은 데이터 원본에 의해 결정됩니다. 데이터 원본의 날짜 속성을 참조하십시오.
아래 예에서 9월 22일은 일요일이고 9월 24일은 화요일입니다. DATEDIFF 함수는 이러한 날짜 사이의 주를 계산하는 데 사용됩니다.
DATEDIFF('week', #2013-09-22#, #2013-09-24#, 'monday') = 1
- start_of_week는 'monday'이므로 이들 날짜는 다른 주에 있습니다.
DATEDIFF('week', #2013-09-22#, #2013-09-24#, 'sunday') = 0
- start_of_week는 'sunday'이므로 이들 날짜는 같은 주에 있습니다.
날짜 리터럴(#)
예에서는 파운드 기호(#)를 날짜 식과 함께 사용하는 경우가 많습니다. 이는 텍스트 문자열에 따옴표를 사용하는 것과 유사한 날짜 리터럴이며 기호 내의 값이 날짜임을 Tableau에 알립니다.
날짜 리터럴이 없으면 날짜는 다양한 다른 데이터 유형으로 해석될 수 있습니다. 예:
형식 | 데이터 유형 | 값 |
'March 25, 1986' | 문자열 | 'March 25, 1986' |
#1986-03-25# | 날짜 | #1986-03-25# |
03/25/1986 | 부동 소수점 | 0.00006042 |
1986-03-25 | 정수 | 1,958 |
March 25, 1986 | 유효하지 않음 |
자세한 내용은 리터럴 식 구문을 참조하십시오.
날짜 계산 만들기
Superstore 샘플 데이터 원본을 사용하여 날짜 계산을 만들어 보겠습니다.
- Tableau Desktop에서 Tableau와 함께 제공된 샘플 – 슈퍼스토어라는 저장된 데이터 원본에 연결합니다.
- 워크시트를 엽니다.
- 데이터 패널의 차원에서 Order Date(주문 날짜)를 행 선반에 끌어 놓습니다.
- 행 선반에서 YEAR(Order Date) 필드에 있는 더하기 아이콘(+)을 클릭합니다.
QUARTER(Order Date)가 행 선반에 추가되고 뷰가 업데이트됩니다.
- 행 선반에서 QUARTER(Order Date) 필드에 있는 더하기 아이콘(+)을 클릭하여 MONTH(Order Date)로 드릴다운합니다.
- 분석 > 계산된 필드 만들기를 선택합니다.
- 계산 에디터가 열리면 다음을 수행합니다.
- 계산된 필드의 이름을 Quarter Date로 지정합니다.
- 다음 수식을 입력합니다.
DATETRUNC('quarter', [Order Date])
- 작업을 마쳤으면 확인을 클릭합니다.
새 날짜의 계산된 필드가 데이터 패널의 차원 아래에 나타납니다. 다른 필드와 마찬가지로, 하나 이상의 비주얼리제이션에서 이 필드를 사용할 수 있습니다.
- 데이터 패널의 차원 아래에서 Quarter Date(분기 날짜)를 행 선반으로 끌어 MONTH(Order Date) 오른쪽에 놓습니다. 연도 값을 사용하여 비주얼리제이션이 업데이트됩니다. 이렇게 되는 이유는 Tableau가 날짜 데이터를 가장 높은 세부 수준까지 롤업하기 때문입니다.
- 행 선반에서 YEAR(Quarter Date)를 마우스 오른쪽 단추로 클릭하고 정확한 날짜를 선택합니다.
- 행 선반에서 YEAR(Quarter Date)를 다시 마우스 오른쪽 단추로 클릭하고 불연속형을 선택합니다.
테이블의 각 행에 대한 정확한 분기 날짜를 사용하여 비주얼리제이션이 업데이트됩니다.