메모
이 함수는 의미 없는 결과를 반환할 가능성이 있으므로 시각적 계산
입력이 날짜 열인 경우 현재 컨텍스트의 날짜에서 지정된 간격 수만큼 정방향 또는 뒤로 이동한 날짜 열이 포함된 테이블을 반환합니다.
입력이 달력인 경우 함수는 현재 컨텍스트에 따라 지정된 간격 수만큼 정방향 또는 뒤로 이동한 날짜를 반환합니다. 출력에는 기본 태그가 지정된 열과 시간 관련 열이 포함됩니다.
구문
DATEADD(<dates> or <calendar>, <number_of_intervals>, <interval>[,<Extension>],[,<Truncation>])
매개 변수
| 변수 | 정의 |
|---|---|
dates or calendar |
날짜 또는 달력 참조가 포함된 열입니다. |
number_of_intervals |
날짜에 추가하거나 뺄 간격 수를 지정하는 정수입니다. |
interval |
날짜를 이동할 간격입니다. 간격 값은 다음 yearquartermonthweekday중 하나일 수 있습니다. 주 열거형은 달력 참조가 제공된 경우에만 적용됩니다. |
extension |
일정 참조가 제공되는 경우에만 적용됩니다. 원래 기간의 날짜가 결과 기간보다 적은 경우 동작을 정의합니다. 유효한 값은 EXTENDING(기본값), PRECISE, ENDALIGNED입니다. |
truncation |
일정 참조가 제공되는 경우에만 적용됩니다. 원래 기간에 결과 기간보다 더 많은 날짜가 있는 경우의 동작을 정의합니다. 유효한 값은 BLANKS(기본값), ANCHORED입니다. |
반환 값
날짜 열 입력의 경우 날짜 값의 단일 열을 포함하는 테이블입니다.
달력 입력의 경우 현재 컨텍스트에서 이동된 기간의 모든 기본 태그가 지정된 열과 시간 관련 열이 포함된 테이블입니다.
비고
dates 인수는 다음 중 어느 것이든 될 수 있습니다.
날짜/시간 열에 대한 참조입니다.
날짜/시간 값의 단일 열을 반환하는 테이블 식입니다.
날짜/시간 값의 단일 열 테이블을 정의하는 부울 식입니다.
메모
부울 식에 대한 제약 조건은 함수
항목에 설명되어 있습니다. number_of_intervals지정된 숫자가 양수이면dates날짜가 정시에 이동합니다. 숫자가 음수이면dates날짜가 시간을 거슬러 올라갑니다.interval매개 변수는 문자열 집합이 아니라 열거형입니다. 따라서 값은 따옴표로 묶어서는 안 됩니다. 또한year,quarter,month,day사용 시 전체 철자가 지정되어야 합니다.결과 테이블에는
dates열에 있는 날짜만 포함됩니다.날짜 열 구문을 사용하고 현재 컨텍스트의 날짜가 연속 간격을 형성하지 않으면 함수는 오류를 반환합니다.
이 함수는 계산 열 또는 RLS(행 수준 보안) 규칙에서 사용되는 경우 DirectQuery 모드에서 사용할 수 없습니다.
예제 - 날짜 집합 이동
다음 수식은 현재 컨텍스트에서 날짜 1년 전의 날짜를 계산합니다.
= DATEADD ( DateTime[DateKey], -1, YEAR )
일정 기반 시간 인텔리전스의 예
다음 수식은 현재 컨텍스트의 날짜에서 1년 뒤로 이동한 날짜 테이블을 반환합니다.
DATEADD ( FiscalCalendar, -1, YEAR )
입력이 날짜 열인 경우의 특수 동작
선택 영역에 지난 2일이 DATEADD 포함된 경우 "확장" 의미 체계를 사용하며 월말까지의 날짜가 포함됩니다. 예를 들어 2013년 2월 27일과 28일이 선택 영역에 포함되고 한 달이 추가되면 DATEADD 3월 27일부터 31일까지 반환됩니다.
이 동작은 지난 2일의 월이 선택 영역에 포함된 경우에만 발생합니다. 2월 27일만 선택하면 3월 27일로 이동합니다.
= DATEADD(DateTime[DateKey], 1, month)
일정 기반 시간 인텔리전스는 두 가지 선택적 매개 변수인 "확장" 및 "잘림"을 통해 더 많은 제어를 제공합니다. 자세한 내용은 위의 매개 변수 설명을 참조하세요.
선택 영역이 시프트 수준보다 세분화된 경우 달력 기반 DateAdd의 동작
달력 참조를 사용하고 선택 영역이 시프트 수준보다 세분화된 경우 인덱스 기반 접근 방식이 수행됩니다. 이 동작을 설명하기 위해 선택 영역이 날짜 수준에 있고 DATEADD()가 월 단위로 이동하는 시나리오를 살펴보겠습니다. DateAdd에서 수행할 작업은 다음과 같습니다.
월 내 현재 선택 영역의 위치를 결정합니다.
예를 들어 현재 선택 영역이 3월 3일부터 10일까지인 경우 위치는 매월 3일부터 10일까지입니다.월 적용 시프트(예: +1의 교대 근무)가 3월에서 4월로 변경됩니다.
이동된 월의 동일한 상대 위치를 반환합니다. 새 달의 10일(예: 4월 3~10일)에 3번째를 검색합니다.
선택 영역이 시프트 수준보다 세분화된 경우 달력 기반 DateAdd에 대한 매개 변수
선택 세분성이 시프트 단위(예: 월별로 이동하는 동안 개별 날짜 선택)보다 더 미세 한 경우 인덱스 기반 동작 은 특히 다양한 길이의 개월에 걸쳐 모호성을 유발할 수 있습니다. 이러한 에지 사례를 처리하기 위해 두 개의 매개 변수가 도입됩니다.
확장 매개 변수(소규모 → 대규모 기간 이동의 경우):
대상 기간이 현재 기간보다 긴 경우 함수가 동작하는 방식을 제어합니다. 다음 예제와 같이 한 달 앞으로 이동하세요.
Precise: 원래 날짜 범위를 엄격하게 유지합니다.
Feb 25–28→ →March 25–28Extending: 필요한 경우 기간이 끝날 때까지 창을 확장할 수 있습니다.
Feb 25–28→ →March 25–31EndAligned: 선택 영역이 해당 기간의 끝에 도달할 때 종료 날짜를 대상 기간의 끝에 맞춥니다. 그렇지 않으면 상대 위치를 유지합니다.
Feb 28→ 동안Feb 27→March 31→March 27
잘림 매개 변수(큰 → 작은 기간 이동의 경우)
대상 월이 현재 월보다 짧은 경우 함수가 동작하는 방식을 제어합니다. 한 달 뒤로 이동하는 예제를 사용합니다.
Anchored: 결과를 더 작은 기간의 마지막 유효한 날짜 로 고정합니다.
March 31→ →Feb 28Blanks: 이동된 날짜가 없으면 공백 을 반환합니다.
March 31→ →(비어 있음)(2월 이후 31번째)
클래식 및 달력 시간 인텔리전스 간의 동작 차이
일부 시나리오에서는 클래식 및 달력 시간 인텔리전스를 비교할 때 다른 결과를 얻을 수 있습니다. 예를 들어 음력 연도에 SamePeriodLastYear는 날짜 세분성에서 다른 결과를 생성합니다. 달력 기반 시간 인텔리전스에서 2008년 2월 29일을 1년 뒤로 이동하면 2007년 3월 1일이 60일로 취급되기 때문입니다. 클래식 시간 인텔리전스에서 동일한 교대조는 2007년 2월 28일을 반환합니다. 해결 방법은 사용하는 DATEADD것입니다(달력, -<number of a year>, month). 예를 들어 1년에 달력에 13개월이 있는 경우 (일정, -13, 월)을 사용합니다 DATEADD. 이 방법은 월별로 변경되므로 2008년 2월은 2007년 2월로 이동합니다.
관련 콘텐츠
날짜 및 시간 함수