# makedate 스크립트 및 차트 함수

이 함수는 연도 YYYY, 월 MM, 일 DD에서 계산한 날짜를 반환합니다.

구문:

MakeDate(YYYY [ , MM [ , DD ] ])

반환 데이터 유형: 이중

인수

| 인수 | 설명 |
| --- | --- |
| YYYY | 연도는 정수입니다. |
| MM | 월은 정수입니다. 월을 지정하지 않으면 1(1월)이 사용됩니다. |
| DD | 일은 정수입니다. 일을 지정하지 않으면 1(1일)이 사용됩니다. |

## 사용 시기

`makedate()` 함수는 일반적으로 데이터 생성을 위한 스크립트에서 캘린더를 생성하는 데 사용됩니다. 이는 날짜 필드를 날짜로 직접 사용할 수 없지만 연도, 월 및 일 구성 요소를 추출하기 위해 일부 변환이 필요한 경우에도 사용할 수 있습니다.

이 예에서는 날짜 서식 MM/DD/YYYY를 사용합니다. 날짜 서식은 데이터 로드 스크립트 맨 위에서 `SET DateFormat` 문으로 지정됩니다. 이 예제의 서식을 필요에 따라 변경하십시오.

함수 예

| 예제 | 결과 |
| --- | --- |
| `makedate(2012)` | 01/01/2012을 반환합니다. |
| `makedate(12)` | 01/01/2012을 반환합니다. |
| `makedate(2012,12)` | 12/01/2012을 반환합니다. |
| `makedate(2012,2,14)` | 02/14/2012을 반환합니다. |

## 국가별 설정

달리 지정하지 않는 한 이 항목의 예에서는 다음 날짜 형식을 사용합니다: MM/DD/YYYY.날짜 형식은 데이터 로드 스크립트의 `SET DateFormat` 문에 지정됩니다.기본 날짜 형식은 지역 설정 및 기타 요인으로 인해 시스템에서 다를 수 있습니다.아래 예의 형식을 요구 사항에 맞게 변경할 수 있습니다.또는 이러한 예와 일치하도록 로드 스크립트의 형식을 변경할 수 있습니다.

앱의 기본 국가별 설정은 Qlik Sense가 설치된 컴퓨터 또는 서버의 국가별 시스템 설정을 기반으로 합니다.액세스하는 Qlik Sense 서버가 스웨덴으로 설정된 경우, 데이터 로드 편집기는 날짜, 시간 및 통화에 대해 스웨덴 지역 설정을 사용합니다.이러한 국가별 형식 설정은 Qlik Sense 사용자 인터페이스에 표시되는 언어와 관련이 없습니다. Qlik Sense은(는) 사용 중인 브라우저와 동일한 언어로 표시됩니다.

## 예 1 – 기본 예

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makedate.htm)

#### 로드 스크립트 및 결과

개요

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* `Transactions`라는 테이블에 로드되는 2018년 트랜잭션 집합이 포함된 데이터 집합.

* `DateFormat` 시스템 변수(MM/DD/YYYY) 서식으로 제공된 날짜 필드.

* MM/DD/YYYY 서식의 날짜를 반환하는 필드 `transaction_date` 만들기.

로드 스크립트

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        makedate(transaction_year, transaction_month, transaction_day) as transaction_date
        ; 
Load * Inline [
transaction_id, transaction_year, transaction_month, transaction_day, transaction_amount, transaction_quantity, customer_id
3750, 2018, 08, 30, 12423.56, 23, 2038593
3751, 2018, 09, 07, 5356.31, 6, 203521
3752, 2018, 09, 16, 15.75, 1, 5646471
3753, 2018, 09, 22, 1251, 7, 3036491
3754, 2018, 09, 22, 21484.21, 1356, 049681
3756, 2018, 09, 22, -59.18, 2, 2038593
3757, 2018, 09, 23, 3177.4, 21, 203521
];
```

결과

데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.

* `transaction_year`

* `transaction_month`

* `transaction_day`

* `transaction_date`

결과 테이블

| transaction\_year | transaction\_month | transaction\_day | transaction\_date |
| --- | --- | --- | --- |
| 2018 | 08 | 30 | 08/30/2018 |
| 2018 | 09 | 07 | 09/07/2018 |
| 2018 | 09 | 16 | 09/16/2018 |
| 2018 | 09 | 22 | 09/22/2018 |
| 2018 | 09 | 23 | 09/23/2018 |

`transaction_date` 필드는 `makedate()` 함수를 사용하고 연도, 월, 일 필드를 함수 인수로 전달하여 선행 LOAD 문에서 만들어집니다.

그런 다음 함수는 이러한 값을 결합하고 날짜 필드로 변환하여 `DateFormat` 시스템 변수의 형식으로 결과를 반환합니다.

## 예 2 – 수정된 DateFormat

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makedate.htm)

#### 로드 스크립트 및 결과

개요

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* 첫 번째 예와 동일한 데이터 집합 및 시나리오.

* `DateFormat` 시스템 변수를 수정하지 않고 DD/MM/YYYY 서식으로 필드 `transaction_date` 만들기.

로드 스크립트

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        date(makedate(transaction_year, transaction_month, transaction_day), ‘DD/MM/YYYY’) as transaction_date
        ; 
Load * Inline [
transaction_id, transaction_year, transaction_month, transaction_day, transaction_amount, transaction_quantity, customer_id
3750, 2018, 08, 30, 12423.56, 23, 2038593
3751, 2018, 09, 07, 5356.31, 6, 203521
3752, 2018, 09, 16, 15.75, 1, 5646471
3753, 2018, 09, 22, 1251, 7, 3036491
3754, 2018, 09, 22, 21484.21, 1356, 049681
3756, 2018, 09, 22, -59.18, 2, 2038593
3757, 2018, 09, 23, 3177.4, 21, 203521
];
```

결과

데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.

* `transaction_year`

* `transaction_month`

* `transaction_day`

* `transaction_date`

결과 테이블

| transaction\_year | transaction\_month | transaction\_day | transaction\_date |
| --- | --- | --- | --- |
| 2018 | 08 | 30 | 30/08/2018 |
| 2018 | 09 | 07 | 07/09/2018 |
| 2018 | 09 | 16 | 16/09/2018 |
| 2018 | 09 | 22 | 22/09/2018 |
| 2018 | 09 | 23 | 23/09/2018 |

이 경우 `makedate()` 함수는 `date()` 함수 내부에 중첩됩니다. `date()` 함수의 두 번째 인수는 `makedate()` 함수 결과의 서식을 필수 DD/MM/YYYY로 설정합니다.

## 예 3 – 차트 개체 예

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makedate.htm)

#### 로드 스크립트 및 차트 표현식

개요

데이터 로드 편집기를 열고 새 섹션에 아래 로드 스크립트를 추가합니다.

로드 스크립트에는 다음이 포함됩니다.

* `Transactions`라는 테이블에 로드되는 2018년 트랜잭션 집합이 포함된 데이터 집합.

* 두 필드에 제공되는 트랜잭션 날짜: `year` 및 `month`.

MM/DD/YYYY 서식으로 날짜를 반환하는 차트 개체 측정값 `transaction_date`를 만듭니다.

로드 스크립트

```
SET DateFormat='MM/DD/YYYY';

Transactions:
Load * Inline [
transaction_id, transaction_year, transaction_month, transaction_amount, transaction_quantity, customer_id
3750, 2018, 08, 12423.56, 23, 2038593
3751, 2018, 09, 5356.31, 6, 203521
3752, 2018, 09, 15.75, 1, 5646471
3753, 2018, 09, 1251, 7, 3036491
3754, 2018, 09, 21484.21, 1356, 049681
3756, 2018, 09, -59.18, 2, 2038593
3757, 2018, 09, 3177.4, 21, 203521
];
```

결과

데이터를 로드하고 시트를 엽니다. 새 테이블을 만들고 다음 필드를 차원으로 추가합니다.

* `year`

* `month`

`transaction_date`를 확인하려면 다음 측정값을 만듭니다.

`=makedate(transaction_year,transaction_month)`

결과 테이블

| transaction\_year | transaction\_month | transaction\_date |
| --- | --- | --- |
| 2018 | 08 | 08/01/2018 |
| 2018 | 09 | 09/01/2018 |

`transaction_date` 측정값은 `makedate()` 함수를 사용하고 연도 및 월 필드를 함수 인수로 전달하여 차트 개체에서 만들어집니다.

그런 다음 이 함수는 이러한 값과 가정된 날짜 값 01을 결합합니다. 이러한 값은 날짜 필드로 변환되어 `DateFormat` 시스템 변수 형식으로 결과를 반환합니다.

## 예 4 – 시나리오

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makedate.htm)

#### 로드 스크립트 및 차트 표현식

개요

캘린더 연도 2022에 대한 캘린더 데이터 집합을 만듭니다.

로드 스크립트

```
SET DateFormat='MM/DD/YYYY';

Calendar:
	load 
		*
    where year(date)=2022;
load
	date(recno()+makedate(2021,12,31)) as date
AutoGenerate 400;
```

결과

결과 테이블

| 날짜 |
| --- |
| 01/01/2022 |
| 01/02/2022 |
| 01/03/2022 |
| 01/04/2022 |
| 01/05/2022 |
| 01/06/2022 |
| 01/07/2022 |
| 01/08/2022 |
| 01/09/2022 |
| 01/10/2022 |
| 01/11/2022 |
| 01/12/2022 |
| 01/13/2022 |
| 01/14/2022 |
| 01/15/2022 |
| 01/16/2022 |
| 01/17/2022 |
| 01/18/2022 |
| 01/19/2022 |
| 01/20/2022 |
| 01/21/2022 |
| 01/22/2022 |
| 01/23/2022 |
| 01/24/2022 |
| 01/25/2022 |
| + 340 추가 행 |

makedate() 함수는 2021년 12월 31일에 대한 날짜 값을 만듭니다. recno() 함수는 1부터 시작하여 테이블에 로드되는 현재 레코드의 레코드 번호를 제공합니다. 따라서 첫 번째 레코드의 날짜는 2022년 1월 1일입니다. 각각의 연속적인 recno()는 이 날짜를 1씩 증가시킵니다. 이 표현식은 값을 날짜로 변환하는 date() 함수로 래핑됩니다. 이 과정을 autogenerate 함수에 의해 400번 반복합니다. 마지막으로 선행 LOAD를 사용하여 where 조건을 사용하여 2022년의 날짜만 로드할 수 있습니다. 이 스크립트는 2022년의 모든 날짜가 포함된 캘린더를 생성합니다.