# inmonthstodate Função de script e de gráfico

Essa função descobre se um carimbo de data/hora está dentro da parte de um período do mês, bimestre, trimestre, quadrimestre ou semestre, até e incluindo o último milissegundo de `base_date`. Também é possível descobrir se uma data/hora está dentro de um período de tempo anterior ou seguinte.

Sintaxe:

InMonths (n\_months, timestamp, base\_date, period\_no[, first\_month\_of\_year ])

Tipo de dados de retorno: Booleano

Diagrama da função `inmonthstodate`.

Diagrama da função `inmonthstodate`.

Diagrama da função `inmonthstodate`inmonthstodate. ![Diagrama mostrando como a função inmonthstodate pode ser usada para identificar se um carimbo de data/hora está dentro ou fora de um segmento de tempo definido.](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-diagram1.png)

Argumentos

| Argumento | Descrição |
| --- | --- |
| n\_months | O número de meses que define o período. Um inteiro ou uma expressão que se resolve como um inteiro que deve ser um dos seguintes: 1 (equivalente à função inmonth()), 2 (bimestre), 3 (equivalente à função inquarter()), 4 (quadrimestre) ou 6 (semestre). |
| timestamp | A data que você deseja comparar com base\_date. |
| base\_date | Data que é usada para avaliar o período. |
| period\_no | O período pode ser deslocado por period\_no, um inteiro ou expressão que resolve um inteiro, no qual o valor 0 indica o período que contém base\_date. Valores negativos em period\_no indicam períodos precedentes e valores positivos indicam períodos sucessivos. |
| first\_month\_of\_year | Se desejar trabalhar com anos (fiscais) que não comecem em janeiro, indique um valor entre 2 e 12 em first\_month\_of\_year. |

Na função `inmonthstodate()`, `base_date` atua como o ponto final do segmento do ano específico do qual ele faz parte.

Por exemplo, se o ano fosse dividido em segmentos terciais e `base_date` fosse 15 de maio, qualquer carimbo de data/hora entre o início de janeiro e o final de abril retornaria um resultado booleano de FALSE. As datas entre 1º de maio e 15 de maio retornariam TRUE. O resto do ano retornaria FALSE.

Diagrama do intervalo de resultados booleanos da função `inmonthstodate`.

Diagrama do intervalo de resultados booleanos da função `inmonthstodate`.

Diagrama do intervalo de resultados booleanos da função `inmonthstodate`inmonthstodate. ![Diagrama mostrando o intervalo de resultados booleanos da função inmonthstodate.](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-diagram2.png)

Os seguintes segmentos do ano estão disponíveis na função como argumentos `n_month`.

Argumentos `n_month`n\_month

| Período | Número de meses |
| --- | --- |
| mês | 1 |
| bimestre | 2 |
| trimestre | 3 |
| tercil | 4 |
| semestre | 6 |

Quando usar inmonthstodate

A função `inmonthstodate()` retorna um resultado booleano. Normalmente, esse tipo de função é usado como condição em `if expression`. Usando a função `inmonthstodate()`, você pode selecionar o período que deseja avaliar. Por exemplo, fornecer uma variável de entrada que permite ao usuário identificar os produtos fabricados no mês, trimestre ou semestre de um período, até uma determinada data.

## 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 carga 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. Para obter mais informações, consulte [Modificando configurações regionais para aplicativos e scripts](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm).

As configurações regionais padrão nos aplicativos são baseadas no perfil do usuário. Essas configurações de formato regional não estão relacionadas ao idioma exibido na interface do usuário do Qlik Cloud. O Qlik Cloud será exibido no mesmo idioma do navegador que você está usando.

Se você for um criador de aplicativos, poderá definir a região padrão para os aplicativos que criar. Para obter mais informações, consulte [Definir suas configurações regionais preferidas para criar aplicativos e scripts no Qlik Cloud Analytics](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting).

Exemplos de funções

| Exemplo | Resultado |
| --- | --- |
| `inmonthstodate(4, '01/25/2013', '04/25/2013',<br>0)` | Retorna True porque o valor de timestamp, 01/25/2013, está dentro do período de quatro meses 01/01/2013 até o final de 04/25/2013, em que o valor de base\_date, 04/25/2013, está. |
| `inmonthstodate(4, '04/26/2013', '04/25/2006',<br>0)` | Retorna False, porque 04/26/2013 está fora do mesmo período do exemplo anterior. |
| `inmonthstodate(4, '09/25/2005', '02/01/2006',<br>-1)` | Retorna True, porque o valor de period\_no, -1, desloca o período de pesquisa para um período de quatro meses (o valor de n-months), o que faz com que o período de pesquisa seja de 01/09/2005 a 02/01/2006. |
| `inmonthstodate(4, '04/25/2006', '06/01/2006',<br>0, 3)` | Retorna True, porque o valor de first\_month\_of\_year está definido como 3, o que faz com que o período de pesquisa seja de 03/01/2006 a 06/01/2006 em vez de 05/01/2006 a 06/01/2006. |

## Exemplo 1: Sem argumentos adicionais

[](https://help.qlik.com/en-US/cloud-services/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inmonthstodate.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 seção.

O script de carregamento contém:

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

* Um campo de data na variável de sistema `DateFormat`, no formato `(MM/DD/YYYY)`.

* Uma instrução de carregamento anterior contendo:

  * A função `inmonthstodate()` que é definida como o campo, “`in_months_to_date`”. Isso determina quais transações ocorreram no trimestre até 15 de maio de 2022.

Script de carregamento

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
    *, 
    inmonthstodate(3,date,'05/15/2022', 0) as in_months_to_date 
    ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'1/19/2022',37.23 
8189,'1/7/2022',17.17 
8190,'2/28/2022',88.27 
8191,'2/5/2022',57.42 
8192,'3/16/2022',53.80 
8193,'4/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/16/2022',87.21 
8196,'6/15/2022',95.93 
8197,'6/26/2022',45.89 
8198,'7/9/2022',36.23 
8199,'7/22/2022',25.66 
8200,'7/23/2022',82.77 
8201,'7/27/2022',69.98 
8202,'8/2/2022',76.11 
8203,'8/8/2022',25.12 
8204,'8/19/2022',46.23 
8205,'9/26/2022',84.21 
8206,'10/14/2022',96.24 
8207,'10/29/2022',67.67 
]; 
```

Resultados

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

* `date`
* `in_months_to_date`

Tabela de resultados

| data | in\_months\_to\_date |
| --- | --- |
| 1/7/2022 | 0 |
| 1/19/2022 | 0 |
| 2/5/2022 | 0 |
| 2/28/2022 | 0 |
| 3/16/2022 | 0 |
| 4/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/16/2022 | 0 |
| 6/15/2022 | 0 |
| 6/26/2022 | 0 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

O campo "`in_months_to_date`" é criado na instrução de carregamento anterior usando a função `inmonthstodate()`.

O primeiro argumento fornecido é `3`, que divide o ano em segmentos trimestrais. O segundo argumento identifica qual campo está sendo avaliado. O terceiro argumento é uma data codificada para 15 de maio, que é a `base_date` que define o limite final do segmento. Um `period_no` de `0` é o argumento final.

Diagrama da função `inmonthstodate` sem argumentos adicionais.

Diagrama da função `inmonthstodate` sem argumentos adicionais.

Diagrama da função `inmonthstodate`inmonthstodate sem argumentos adicionais. ![Diagrama mostrando o intervalo de transações identificadas como TRUE pela função inmonthstodate.](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-diagram2.png)

Qualquer transação que ocorra entre 1º de abril e 15 de maio retorna um resultado booleano de TRUE. As datas de transação fora desse período retornam FALSE.

## Exemplo 2 – period\_no

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

#### Script de carregamento e resultados

Visão geral

São usados o mesmo conjunto de dados e cenário do primeiro exemplo.

No entanto, neste exemplo, a tarefa é criar um campo, “`previous_qtr_to_date`”, que determina se as transações ocorreram um trimestre antes de 15 de maio.

Script de carregamento

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
    *, 
    inmonthstodate(3,date,'05/15/2022', -1) as previous_qtr_to_date 
    ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'1/19/2022',37.23 
8189,'1/7/2022',17.17 
8190,'2/28/2022',88.27 
8191,'2/5/2022',57.42 
8192,'3/16/2022',53.80 
8193,'4/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/16/2022',87.21 
8196,'6/15/2022',95.93 
8197,'6/26/2022',45.89 
8198,'7/9/2022',36.23 
8199,'7/22/2022',25.66 
8200,'7/23/2022',82.77 
8201,'7/27/2022',69.98 
8202,'8/2/2022',76.11 
8203,'8/8/2022',25.12 
8204,'8/19/2022',46.23 
8205,'9/26/2022',84.21 
8206,'10/14/2022',96.24 
8207,'10/29/2022',67.67 
]; 
```

Resultados

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

* `date`

* `previous_qtr_to_date`

Tabela de resultados

| data | previous\_qtr\_to\_date |
| --- | --- |
| 1/7/2022 | -1 |
| 1/19/2022 | -1 |
| 2/5/2022 | -1 |
| 2/28/2022 | 0 |
| 3/16/2022 | 0 |
| 4/1/2022 | 0 |
| 5/7/2022 | 0 |
| 5/16/2022 | 0 |
| 6/15/2022 | 0 |
| 6/26/2022 | 0 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

Ao usar `-1` como o argumento `period_no` na função `inmonthstodate()`, a função muda os limites do segmento do ano comparador em um trimestre.

15 de maio cai no segundo trimestre do ano e, portanto, o segmento inicialmente equivale a um período entre 1º de abril e 15 de maio. O argumento `period_no` compensa esse segmento em menos três meses. Os limites da data passam de 1º de janeiro para 15 de fevereiro.

Diagrama da função `inmonthstodate` com period\_no definido como -1.

Diagrama da função `inmonthstodate` com period\_no definido como -1.

Diagrama da função `inmonthstodate`inmonthstodate com period\_no definido como -1. ![Diagrama mostrando o intervalo de transações com o argumento period_no definido como -1.](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-example2-diagram.png)

Portanto, qualquer transação que ocorra entre 1º de janeiro e 15 de fevereiro retornará um resultado booleano de TRUE.

## Exemplo 3: first\_month\_of\_year

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

#### Script de carregamento e resultados

Visão geral

São usados o mesmo conjunto de dados e cenário do primeiro exemplo.

Neste exemplo, a política organizacional é que março seja o primeiro mês do exercício financeiro.

Crie um campo, “`in_months_to_date`”, que determina quais transações ocorreram no mesmo trimestre até 15 de maio de 2022.

Script de carregamento

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
    *, 
    inmonthstodate(3,date,'05/15/2022', 0,3) as in_months_to_date 
    ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'1/19/2022',37.23 
8189,'1/7/2022',17.17 
8190,'2/28/2022',88.27 
8191,'2/5/2022',57.42 
8192,'3/16/2022',53.80 
8193,'4/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/16/2022',87.21 
8196,'6/15/2022',95.93 
8197,'6/26/2022',45.89 
8198,'7/9/2022',36.23 
8199,'7/22/2022',25.66 
8200,'7/23/2022',82.77 
8201,'7/27/2022',69.98 
8202,'8/2/2022',76.11 
8203,'8/8/2022',25.12 
8204,'8/19/2022',46.23 
8205,'9/26/2022',84.21 
8206,'10/14/2022',96.24 
8207,'10/29/2022',67.67 
]; 
```

Resultados

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

* `date`

* `in_months_to_date`

Tabela de resultados

| data | previous\_qtr\_to\_date |
| --- | --- |
| 1/7/2022 | 0 |
| 1/19/2022 | 0 |
| 2/5/2022 | 0 |
| 2/28/2022 | 0 |
| 3/16/2022 | -1 |
| 4/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/16/2022 | 0 |
| 6/15/2022 | 0 |
| 6/26/2022 | 0 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

Usando `3` como argumento `first_month_of_year` na função `inmonthstodate()`, a função começa o ano em 1º de março e depois o divide em trimestres com base no primeiro argumento fornecido. Portanto, os segmentos de trimestre são:

* Mar-May

* Jun-Aug

* Sep-Nov

* Dec-Feb

O `base_date` de 15 de maio então segmenta o trimestre de março a maio, definindo seu limite final como 15 de maio.

Diagrama da função `inmonthstodate` com março definido como primeiro mês do ano.

Diagrama da função `inmonthstodate` com março definido como primeiro mês do ano.

Diagrama da função `inmonthstodate`inmonthstodate com março definido como primeiro mês do ano. ![Diagrama mostrando o intervalo de transações, com o primeiro mês do ano definido como março.](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-example3-diagram.png)

Portanto, qualquer transação que ocorra entre 1º de março e 15 de maio retornará um resultado booleano de TRUE, e transações com datas fora desses limites retornarão um valor de FALSE.

## Exemplo 4 – Exemplo de gráfico

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

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

Visão geral

São usados o mesmo conjunto de dados e cenário do primeiro exemplo.

Neste exemplo, o conjunto de dados permanece inalterado e é carregado no aplicativo. A tarefa é criar um cálculo que determine se as transações ocorreram no mesmo trimestre de 15 de maio como medida em um gráfico do aplicativo.

Script de carregamento

```
SET DateFormat='MM/DD/YYYY'; 
						 
Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'1/19/2022',37.23 
8189,'1/7/2022',17.17 
8190,'2/28/2022',88.27 
8191,'2/5/2022',57.42 
8192,'3/16/2022',53.80 
8193,'4/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/16/2022',87.21 
8196,'6/15/2022',95.93 
8197,'6/26/2022',45.89 
8198,'7/9/2022',36.23 
8199,'7/22/2022',25.66 
8200,'7/23/2022',82.77 
8201,'7/27/2022',69.98 
8202,'8/2/2022',76.11 
8203,'8/8/2022',25.12 
8204,'8/19/2022',46.23 
8205,'9/26/2022',84.21 
8206,'10/14/2022',96.24 
8207,'10/29/2022',67.67 
]; 
```

Resultados

Carregue os dados e abra uma pasta. Crie uma nova tabela e adicione esse campo como uma dimensão:

`date`

Para calcular se as transações ocorreram no mesmo trimestre de 15 de maio, crie a seguinte medida:

`=inmonthstodate(3,date,'05/15/2022', 0)` ` `

Tabela de resultados

| data | =inmonthstodate(3,date,'05/15/2022', 0) |
| --- | --- |
| 1/7/2022 | 0 |
| 1/19/2022 | 0 |
| 2/5/2022 | 0 |
| 2/28/2022 | 0 |
| 3/16/2022 | 0 |
| 4/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/16/2022 | 0 |
| 6/15/2022 | 0 |
| 6/26/2022 | 0 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

A medida “`‘in_months_to_date`” é criada no gráfico usando a função `inmonthstodate()`.

O primeiro argumento fornecido é `3`, que divide o ano em segmentos trimestrais. O segundo argumento identifica qual campo está sendo avaliado. O terceiro argumento é uma data codificada de 15 de maio, `base_date` que define o limite final do segmento. Um `period_no` de `0` é o argumento final.

Diagrama da função `inmonthstodate` com segmentos trimestrais.

Diagrama da função `inmonthstodate` com segmentos trimestrais.

Diagrama da função `inmonthstodate`inmonthstodate com segmentos trimestrais. ![Diagrama mostrando o intervalo de transações que retornam um valor booleano de TRUE.](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-example4-diagram.png)

Qualquer transação que ocorra entre 1º de abril e 15 de maio retornará um resultado booleano de TRUE. As datas de transação fora desse segmento retornarão FALSE.

## Exemplo 5: Cenário

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

#### Script de carregamento e resultados

Visão geral

Neste exemplo, um conjunto de dados é carregado em uma tabela chamada "Sales". A tabela contém os seguintes campos:

* ID do produto

* Tipo de produto

* Data de venda

* Preço de venda

O usuário final deseja um gráfico que mostre, por tipo de produto, as vendas dos produtos vendidos no período que antecede 24 de dezembro de 2022. O usuário gostaria de poder definir a duração desse período.

Script de carregamento

```
SET vPeriod = 1; 

Products: 
Load 
* 
Inline  
[ 
product_id,product_type,sales_date,sales_price 
8188,product A,'9/19/2022',37.23 
8189,product D,'10/27/2022',17.17 
8190,product C,'10/30/2022',88.27 
8191,product B,'10/31/2022',57.42 
8192,product D,'11/16/2022',53.80 
8193,product D,'11/28/2022',82.06 
8194,product A,'12/2/2022',40.39 
8195,product B,'12/5/2022',87.21 
8196,product C,'12/15/2022',95.93 
8197,product B,'12/16/2022',45.89 
8198,product C,'12/19/2022',36.23 
8199,product D,'12/22/2022',25.66 
8200,product D,'12/23/2022',82.77 
8201,product A,'12/24/2022',69.98 
8202,product A,'12/24/2022',76.11 
8203,product B,'12/26/2022',25.12 
8204,product B,'12/27/2022',46.23 
8205,product B,'12/27/2022',84.21 
8206,product C,'12/28/2022',96.24 
8207,product D,'12/29/2022',67.67 
]; 
```

Resultados

Carregue os dados e abra uma pasta.

No início do script de carregamento, é criada uma variável vPeriod que é vinculada ao controle de entrada da variável.

Faça o seguinte:

1. No painel de ativos, clique em Gráficos.

2. Em Objetos de painel, arraste uma Entrada de variável para a pasta.

3. Insira um título para o gráfico.

4. Em Variável, selecione vPeriod como o nome e defina o objeto para ser exibido como um Menu suspenso.

5. Em Valores, clique em valores Dinâmicos. Insira o seguinte:

   ```
   ='1~month|2~bi-month|3~quarter|4~tertial|6~half-year'.
   ```

6. Adicione uma nova tabela à pasta.

7. Em Dados no painel de propriedades, adicione product\_type como uma dimensão.

8. Adicione a seguinte expressão como medida:

   =sum(if(inmonthstodate($(vPeriod),sales\_date,makedate(2022,12,24),0),sales\_price,0))

9. Defina o Formato numérico da medida como Dinheiro.

Tabela de resultados

| product\_type | =sum(if(inmonthstodate($(vPeriod),sales\_date,makedate(2022,12,24),0),sales\_price,0)) |
| --- | --- |
| produto A | $186.48 |
| produto B | $190.52 |
| produto C | $220.43 |
| produto D | $261.46 |

A função inmonthstodate() usa a entrada do usuário como argumento para definir o tamanho do segmento inicial do ano.

A função transmite a data de venda de cada um dos produtos como o segundo argumento da função inmonthstodate(). Ao usar 24 de dezembro como terceiro argumento na função inmonthstodate(), os produtos com datas de venda que ocorrem no período definido até 24 de dezembro, inclusive, retornam um valor booleano de TRUE. A função sum adiciona as vendas desses produtos.