# inmonths - Função de script e de gráfico

Essa função descobre se um carimbo de data/hora está dentro do mesmo mês, bimestre, trimestre, quadrimestre ou semestre como data base. 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

No Qlik Sense, o valor booleano “true” é representado por -1, e o valor falso é representado por 0.

Diagrama da função `inmonths()`

Diagrama da função `inmonths()`

Diagrama da função `inmonths()`inmonths() ![Diagrama que mostra o intervalo de tempo em que a função inmonths() avaliará uma data base como true ou false.](https://help.qlik.com/pt-BR/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-diagram1.png)

A função `inmonths()` divide o ano em segmentos com base no argumento `n_months` fornecido. Em seguida, ela determina se cada carimbo de data/hora avaliado se enquadra no mesmo segmento do argumento `base_date`. No entanto, se um argumento `period_no` for fornecido, a função determinará se os carimbos de data/hora se enquadram em um período anterior ou posterior de `base_date`.

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 |
| quadrimestre | 4 |
| semestre | 6 |

Quando usar

A função `inmonths()` retorna um resultado booleano. Normalmente, esse tipo de função será usado como uma condição em um `if expression`. Usando a função `inmonths()`, você pode selecionar o período que deseja avaliar. Por exemplo, permitir que o usuário identifique produtos fabricados no mês, trimestre ou semestre de um determinado período.

Tipo de dados de retorno: Booleano

No Qlik Sense, o valor booleano “true” é representado por -1, e o valor falso é representado por 0.

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

Você pode usar os seguintes valores para definir o primeiro mês do ano no argumento `first_month_of_year`:

Valores first\_month\_of\_year

| Mês | Valor |
| --- | --- |
| Fevereiro | 2 |
| Março | 3 |
| Abril | 4 |
| Maio | 5 |
| Junho | 6 |
| Julho | 7 |
| Agosto | 8 |
| Setembro | 9 |
| Outubro | 10 |
| Novembro | 11 |
| Dezembro | 12 |

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

Exemplos de funções

| Exemplo | Resultado |
| --- | --- |
| `inmonths(4, '01/25/2013', '04/25/2013', 0)` | Retorna TRUE. Porque o valor de timestamp, 25/01/2013, está dentro do período de quatro meses de 01/01/2013 a 30/04/2013, no qual está o valor de `base_date`, 25/04/2013. |
| `inmonths(4, '05/25/2013', '04/25/2013', 0)` | Retorna FALSE. Porque 25/05/2013 está fora do mesmo período do exemplo anterior. |
| `inmonths(4, '11/25/2012', '02/01/2013', -1 )` | Retorna TRUE. Porque o valor de `period_no`, `-1`, retrocede o período de pesquisa em um período de quatro meses (o valor de n meses), o que torna o período de pesquisa de 01/09/2012 a 31/12/2012. |
| `inmonths(4, '05/25/2006', '03/01/2006', 0, 3)` | Retorna TRUE. Porque o valor de `first_month_of_year` está definido como `3`, o que torna o período de pesquisa de 01/03/2006 a 30/07/2006 em vez de 01/01/2006 a 30/04/2006. |

## Exemplo 1: Nenhum argumento adicional

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inmonths.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 é carregado em uma tabela denominada "`Transactions`".

* Um carregamento anterior com uma variável adicional, “`in_months`”, que determina quais transações ocorreram no mesmo trimestre de 15 de maio de 2022.

Script de carregamento

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
       *, 
       inmonths(3,date,'05/15/2022', 0) as in_months 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'2/19/2022',37.23 
8189,'3/7/2022',17.17 
8190,'3/30/2022',88.27 
8191,'4/5/2022',57.42 
8192,'4/16/2022',53.80 
8193,'5/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/22/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`

Tabela de resultados

| data | in\_months |
| --- | --- |
| 2/19/2022 | 0 |
| 3/7/2022 | 0 |
| 3/30/2022 | 0 |
| 4/5/2022 | -1 |
| 4/16/2022 | -1 |
| 5/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/22/2022 | -1 |
| 6/15/2022 | -1 |
| 6/26/2022 | -1 |
| 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" é criado na instrução de carregamento anterior usando a função `inmonths()`. O primeiro argumento fornecido é `3`, que divide o ano em segmentos trimestrais. O segundo argumento identifica qual campo está sendo avaliado, o campo de data neste exemplo. O terceiro argumento é uma data codificada para 15 de maio, que é `base_date`, e `period_no` de `0` é o argumento final.

Diagrama da função `inmonths()` com segmentos trimestrais

Diagrama da função `inmonths()` com segmentos trimestrais

Diagrama da função `inmonths()`inmonths() com segmentos trimestrais![Diagrama que mostra o intervalo de tempo avaliado pela função inmonths(), com 15 de maio como data base e o ano dividido em segmentos trimestrais.](https://help.qlik.com/pt-BR/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-examples1_and4-diagram.png)

Maio cai no segundo trimestre do ano. Portanto, qualquer transação que ocorra entre 1º de abril e 30 de junho retornará um resultado booleano de TRUE. Isso é validado na tabela de resultados.

## Exemplo 2: period\_no

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inmonths.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 carregamento anterior com uma variável adicional, “`previous_quarter`”, que determina se as transações ocorreram no trimestre anterior a 15 de maio de 2022.

Script de carregamento

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
       *, 
       inmonths(3,date,'05/15/2022', -1) as previous_quarter 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'2/19/2022',37.23 
8189,'3/7/2022',17.17 
8190,'3/30/2022',88.27 
8191,'4/5/2022',57.42 
8192,'4/16/2022',53.80 
8193,'5/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/22/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_quarter`

Tabela de resultados

| data | previous quarter |
| --- | --- |
| 2/19/2022 | -1 |
| 3/7/2022 | -1 |
| 3/30/2022 | -1 |
| 4/5/2022 | 0 |
| 4/16/2022 | 0 |
| 5/1/2022 | 0 |
| 5/7/2022 | 0 |
| 5/22/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 função avalia se as transações ocorreram no primeiro trimestre do ano usando `-1` como argumento `period_no` na função `inmonths()`. 15 de maio é `base_date` e cai no segundo trimestre do ano (abril-junho).

Diagrama da função `inmonths()` com segmentos trimestrais e `period_no` definido como `-1`

Diagrama da função `inmonths()` com segmentos trimestrais e `period_no` definido como `-1`

Diagrama da função `inmonths()`inmonths() com segmentos trimestrais e `period_no`period\_no definido como `-1`-1![Diagrama que mostra o intervalo de tempo avaliado pela função inmonths(), com 15 de maio como data base, o ano dividido em segmentos trimestrais e period_no definido como -1, que retrocede o intervalo de tempo em um trimestre.](https://help.qlik.com/pt-BR/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-example2-diagram.png)

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

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inmonths.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 carregamento anterior com uma variável adicional, “`in_months`”, que determina quais transações ocorreram no mesmo trimestre de 15 de maio de 2022.

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

Script de carregamento

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
       *, 
       inmonths(3,date,'05/15/2022', 0, 3) as in_months 
       ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'2/19/2022',37.23 
8189,'3/7/2022',17.17 
8190,'3/30/2022',88.27 
8191,'4/5/2022',57.42 
8192,'4/16/2022',53.80 
8193,'5/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/22/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`

Tabela de resultados

| data | in\_months |
| --- | --- |
| 2/19/2022 | 0 |
| 3/7/2022 | -1 |
| 3/30/2022 | -1 |
| 4/5/2022 | -1 |
| 4/16/2022 | -1 |
| 5/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/22/2022 | -1 |
| 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 `inmonths()`, a função começa o ano em 1º de março. A função `inmonths()` então divide o ano em trimestres: mar-maio, jun-ago, set-nov, dez-fev. Portanto, 15 de maio cai no primeiro trimestre do ano (março-maio).

Diagrama da função `inmonths()` com março definido como primeiro mês do ano

Diagrama da função `inmonths()` com março definido como primeiro mês do ano

Diagrama da função `inmonths()`inmonths() com março definido como primeiro mês do ano![Diagrama que mostra o intervalo de tempo que a função inmonths() avalia com 15 de maio como data base, o ano dividido em segmentos trimestrais e março definido como o primeiro mês do ano.](https://help.qlik.com/pt-BR/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-example3-diagram.png)

Qualquer transação que ocorra nesses meses retornará um resultado booleano de TRUE.

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inmonths.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.

No entanto, neste exemplo, o conjunto de dados permanece inalterado e é carregado no aplicativo. O cálculo que determina se as transações ocorreram no mesmo trimestre de 15 de maio de 2022 é criado como uma medida em um gráfico no aplicativo.

Script de carregamento

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'2/19/2022',37.23 
8189,'3/7/2022',17.17 
8190,'3/30/2022',88.27 
8191,'4/5/2022',57.42 
8192,'4/16/2022',53.80 
8193,'5/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/22/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:

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

Tabela de resultados

| data | =inmonths(3,date,'05/15/2022', 0) |
| --- | --- |
| 2/19/2022 | 0 |
| 3/7/2022 | 0 |
| 3/30/2022 | 0 |
| 4/5/2022 | -1 |
| 4/16/2022 | -1 |
| 5/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/22/2022 | -1 |
| 6/15/2022 | -1 |
| 6/26/2022 | -1 |
| 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`” é criado no gráfico usando a função `inmonths()`. O primeiro argumento fornecido é `3`, que divide o ano em segmentos trimestrais. O segundo argumento identifica qual campo está sendo avaliado, o campo de data neste exemplo. O terceiro argumento é uma data codificada para 15 de maio, que é `base_date`, e `period_no` de `0` é o argumento final.

Diagrama da função `inmonths()` com segmentos trimestrais

Diagrama da função `inmonths()` com segmentos trimestrais

Diagrama da função `inmonths()`inmonths() com segmentos trimestrais![Diagrama que mostra o intervalo de tempo avaliado pela função inmonths(), com 15 de maio como data base e o ano dividido em segmentos trimestrais.](https://help.qlik.com/pt-BR/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-examples1_and4-diagram.png)

Maio cai no segundo trimestre do ano. Portanto, qualquer transação que ocorra entre 1º de abril e 30 de junho retornará um resultado booleano de TRUE. Isso é validado na tabela de resultados.

## Exemplo 5: Cenário

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inmonths.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 que é carregado em uma tabela denominada “Products”.

* A tabela contém os seguintes campos:

  * ID do produto

  * tipo de produto

  * data de fabricação

  * preço de custo

O usuário final deseja um gráfico que mostre, por tipo de produto, o custo dos produtos fabricados no primeiro segmento de 2021. O usuário gostaria de poder definir o comprimento desse segmento.

Script de carregamento

```
SET vPeriod = 1; 

Products: 
Load 
* 
Inline  
[ 
product_id,product_type,manufacture_date,cost_price 
8188,product A,'2/19/2022',37.23 
8189,product D,'3/7/2022',17.17 
8190,product C,'3/30/2022',88.27 
8191,product B,'4/5/2022',57.42 
8192,product D,'4/16/2022',53.80 
8193,product D,'5/1/2022',82.06 
8194,product A,'5/7/2022',40.39 
8195,product B,'5/22/2022',87.21 
8196,product C,'6/15/2022',95.93 
8197,product B,'6/26/2022',45.89 
8198,product C,'7/9/2022',36.23 
8199,product D,'7/22/2022',25.66 
8200,product D,'7/23/2022',82.77 
8201,product A,'7/27/2022',69.98 
8202,product A,'8/2/2022',76.11 
8203,product B,'8/8/2022',25.12 
8204,product B,'8/19/2022',46.23 
8205,product B,'9/26/2022',84.21 
8206,product C,'10/14/2022',96.24 
8207,product D,'10/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 Objetos personalizados.

2. Selecione o pacote Qlik Dashboard, crie um objeto de Entrada de variável.

3. Insira um título para o objeto de 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(inmonths($(vPeriod),manufacture\_date,makedate(2022,01,01),0),cost\_price,0))

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

Tabela de resultados

| product\_type | =sum(if(inmonths($(vPeriod),manufacture\_date,makedate(2022,01,01),0),cost\_price,0)) |
| --- | --- |
| produto A | $88.27 |
| produto B | $37.23 |
| produto C | $17.17 |
| produto D | $0.00 |

A função inmonths() usa a entrada do usuário como argumento para definir o tamanho do segmento inicial do ano. A função transmite a data de fabricação de cada um dos produtos como o segundo argumento da função inmonths(). Ao usar 1º de janeiro como terceiro argumento na função inmonths(), os produtos com datas de fabricação que caem no segmento de abertura do ano retornarão um valor booleano de TRUE e, portanto, a função sum adicionará os custos desses produtos.