# makedate – função de script e gráfico

Esta função retorna uma data calculada a partir do ano YYYY, do mês MM e do dia DD.

Sintaxe:

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

Tipo de dados de retorno: dual

Argumentos

| Argumento | Descrição |
| --- | --- |
| YYYY | O ano como um inteiro. |
| MM | O mês como um inteiro. Se nenhum mês for indicado, 1 (janeiro) será assumido. |
| DD | O dia como um inteiro. Se nenhum dia for indicado, 1 (o primeiro) será assumido. |

## Quando usar

A função `makedate()` normalmente seria usada no script para geração de dados para gerar um calendário. Isso também pode ser usado quando o campo de data não está diretamente disponível como data, mas precisa de algumas transformações para extrair componentes de ano, mês e dia.

Esses exemplos usam o formato de data MM/DD/AAAA. O formato de data é especificado no comando `SET DateFormat` na parte superior do seu script de carregamento de dados. Altere o formato nos exemplos para atender às suas necessidades.

Exemplos de funções

| Exemplo | Resultado |
| --- | --- |
| `makedate(2012)` | Retorna 01/01/2012. |
| `makedate(12)` | Retorna 01/01/2012. |
| `makedate(2012,12)` | Retorna 12/01/2012. |
| `makedate(2012,2,14)` | Retorna 02/14/2012. |

## Configurações regionais

A menos que especificado de outra forma, os exemplos neste tópico usam o seguinte formato de data: MM/DD/AAAA. O formato de data é especificado na instrução `SET DateFormat` no seu script de carregamento de dados. A formatação de data padrão pode ser diferente no seu sistema devido às suas configurações regionais e outros fatores. Você pode alterar os formatos nos exemplos abaixo para atender às suas necessidades. Ou pode alterar os formatos no seu script de carregamento para corresponder a esses exemplos.

As configurações regionais padrão nos aplicativos são baseadas nas configurações regionais do sistema do computador ou servidor em que o Qlik Sense está instalado. Se o servidor Qlik Sense que você está acessando estiver definido como Suécia, o Editor de carregamento de dados usará as configurações regionais suecas para datas, horas e moedas. Essas configurações de formato regional não estão relacionadas ao idioma exibido na interface do usuário do Qlik Sense. O Qlik Sense será exibido no mesmo idioma do navegador que você está usando.

## Exemplo 1: Exemplo básico

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

#### Script de carregamento e resultados

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova guia.

O script de carregamento contém:

* Um conjunto de dados contendo um conjunto de transações para 2018, que é carregado em uma tabela denominada `Transactions`.

* O campo de data fornecido no formato da `variável` de sistema DateFormat (MM/DD/AAAA).

* A criação de um campo, `transaction_date`, que retorna uma data no formato MM/DD/AAAA.

Script de carregamento

```
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
];
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:

* `transaction_year`

* `transaction_month`

* `transaction_day`

* `transaction_date`

Tabela de resultados

| 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 |

O campo `transaction_date` é criado na instrução de carregamento anterior usando a função `makedate()` e informando os campos ano, mês e dia como argumentos da função.

A função então combina e converte esses valores em um campo de data, retornando os resultados no formato da variável de sistema `DateFormat`.

## Exemplo 2: Formato de data modificado

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

#### Script de carregamento e resultados

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova guia.

O script de carregamento contém:

* O mesmo conjunto de dados e cenário do primeiro exemplo.

* A criação de um campo, `transaction_date`, no formato DD/MM/AAAA sem modificar a variável de sistema `DateFormat`.

Script de carregamento

```
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
];
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:

* `transaction_year`

* `transaction_month`

* `transaction_day`

* `transaction_date`

Tabela de resultados

| 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 |

Nesse caso, a função `makedate()` está aninhada dentro da função `date()`. O segundo argumento da função `date()` define o formato dos resultados da função `makedate()` como o DD/MM/AAAA necessário.

## Exemplo 3: Exemplo de objeto de gráfico

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

#### Script de carregamento e expressão de gráfico

Visão geral

Abra o editor da carga de dados e adicione o script de carregamento abaixo em uma nova guia.

O script de carregamento contém:

* Um conjunto de dados contendo um conjunto de transações para 2018, que é carregado em uma tabela chamada `Transactions`.

* As datas da transação são fornecidas em dois campos: `year` e `month`.

Crie uma medida de objeto de gráfico, `transaction_date`, que retorna uma data no formato MM/DD/AAAA.

Script de carregamento

```
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
];
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esses campos como dimensões:

* `year`

* `month`

Para determinar a `transaction_date`, crie essa medida:

`=makedate(transaction_year,transaction_month)`

Tabela de resultados

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

A medida `transaction_date` é criada no objeto de gráfico usando a função `makedate()` e informando os campos de ano e mês como argumentos da função.

A função então combina esses valores, bem como o valor do dia assumido de 01. Esses valores são então convertidos em um campo de data, retornando os resultados no formato da variável de sistema `DateFormat`.

## Exemplo 4: Cenário

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

#### Script de carregamento e expressão de gráfico

Visão geral

Crie um conjunto de dados do calendário para o ano civil de 2022.

Script de carregamento

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

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

Resultados

Tabela de resultados

| date |
| --- |
| 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 |
| Mais de 340 linhas |

A função makedate() cria um valor de data para 31 de dezembro de 2021. A função recno() fornece o número do registro atual que está sendo carregado na tabela, começando em 1. Portanto, o primeiro registro tem a data de 1º de janeiro de 2022. Cada recno() sucessiva então incrementará essa data em 1. Essa expressão é agrupada em uma função date() para converter o valor em uma data. Esse processo é repetido 400 vezes pela função autogenerate. Finalmente, usando um carregamento anterior, uma condição where pode ser usada para carregar somente datas do ano de 2022. Esse script gera um calendário contendo todas as datas de 2022.