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

Esta função retorna um valor correspondente à data/hora com o primeiro milissegundo do primeiro dia do mês que contém date. O formato de saída padrão será o DateFormat definido no script.

Sintaxe:

MonthStart(date[, period\_no])

Tipo de dados de retorno: dual

Diagrama da função `monthstart()`

Diagrama da função `monthstart()`

Diagrama da função `monthstart()`monthstart() ![Exemplo de diagrama de como os elementos da função trabalham juntos para retornar o resultado.](https://help.qlik.com/pt-BR/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthstart-general.png)

A função `monthstart()` determina em qual mês a data cai. Em seguida, ela retorna um carimbo de data/hora, em formato de data, para o primeiro milissegundo daquele mês.

Argumentos

| Argumento | Descrição |
| --- | --- |
| date | A data ou o carimbo de data/hora a ser avaliado. |
| period\_no | period\_no é um inteiro, no qual, se 0 ou omitido, indica o mês que contém date. Valores negativos em period\_no indicam meses precedentes e valores positivos indicam meses sucessivos. |

## Quando usar

A função `monthstart()` é comumente usada como parte de uma expressão quando o usuário deseja que o cálculo use a fração do mês decorrido até o momento. Por exemplo, ela pode ser usada para calcular os juros acumulados em um mês até uma determinada data.

Exemplos de funções

| Exemplo | Resultado |
| --- | --- |
| `monthstart('10/19/2001')` | Retorna 10/01/2001. |
| `monthstart('10/19/2001', -1)` | Retorna 09/01/2001. |

## 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: Sem argumentos adicionais

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

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

* A criação de um campo, `start_of_month`, que retorna um carimbo de data/hora para o início do mês em que as transações ocorreram.

Script de carregamento

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

Transactions:
    Load
        *,
        monthstart(date) as start_of_month,
        timestamp(monthstart(date)) as start_of_month_timestamp
        ;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
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`

* `start_of_month`

* `start_of_month_timestamp`

Tabela de resultados

| data | start\_of\_month | start\_of\_month\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 1/19/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 2/5/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
| 2/28/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
| 3/16/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
| 4/1/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
| 5/7/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 5/16/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 6/15/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 6/26/2022 | 07/01/2022 | 6/1/2022 12:00:00 AM |
| 7/9/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/22/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/23/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/27/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 8/2/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
| 8/8/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
| 8/19/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
| 9/26/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
| 10/14/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
| 10/29/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |

O campo `start_of_month` é criado na instrução de carregamento anterior usando a função `monthstart()` e transmitindo o campo de data como o argumento da função.

A função `monthstart()` identifica em qual mês o valor da data cai, retornando um carimbo de data/hora para o primeiro milissegundo desse mês.

Diagrama da função `monthstart()`, exemplo sem argumentos adicionais

Diagrama da função `monthstart()`, exemplo sem argumentos adicionais

Diagrama da função `monthstart()`monthstart(), exemplo sem argumentos adicionais![Diagrama mostrando os resultados do uso da função monthstart para determinar o mês em que uma transação ocorreu.](https://help.qlik.com/pt-BR/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthstart-example-no-add-arg.png)

A transação 8192 ocorreu em 16 de março. A função `monthstart()` retorna o primeiro milissegundo desse mês, que é 1º de março às 12:00:00 AM.

## Exemplo 2 – period\_no

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

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

* A criação de um campo, `previous_month_start`, que retorna o carimbo de data/hora inicial do mês antes da transação.

Script de carregamento

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

Transactions:
    Load
        *,
        monthstart(date,-1) as previous_month_start,
        timestamp(monthstart(date,-1)) as previous_month_start_timestamp
        ;
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
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_month_start`

* `previous_month_start_timestamp`

Tabela de resultados

| data | previous\_month\_start | previous\_month\_start\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 12/01/2021 | 12/1/2021 12:00:00 AM |
| 1/19/2022 | 12/01/2021 | 12/1/2021 12:00:00 AM |
| 2/5/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 2/28/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 3/16/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
| 4/1/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
| 5/7/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
| 5/16/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
| 6/15/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 6/26/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 7/9/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 7/22/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 7/23/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 7/27/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 8/2/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 8/8/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 8/19/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 9/26/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
| 10/14/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
| 10/29/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |

Nesse caso, como um `period_no` de -1 foi usado como o argumento de deslocamento na função `monthstart()`, a função primeiro identifica o mês em que as transações ocorrem. Em seguida, ela muda um mês antes e identifica o primeiro milissegundo desse mês.

Diagrama da função `monthstart()`, exemplo de period\_no

Diagrama da função `monthstart()`, exemplo de period\_no

Diagrama da função `monthstart()`monthstart(), exemplo de period\_no![Diagrama mostrando os resultados do uso da função monthstart para determinar o mês em que uma transação ocorreu.](https://help.qlik.com/pt-BR/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthstart-example-period-no.png)

A transação 8192 ocorreu em 16 de março. A função `monthstart()` identifica que o mês anterior à realização da transação foi em fevereiro. Em seguida, ela retorna o primeiro milissegundo desse mês, 1º de fevereiro, às 12h00.

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

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

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

Visão geral

Abra o editor de carregamento 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.

No entanto, neste exemplo, o conjunto de dados inalterado é carregado no aplicativo. O cálculo que retorna um carimbo de data/hora para o início do mês em que as transações ocorreram é criado como uma medida em um objeto de gráfico do aplicativo.

Script de carregamento

```

SET DateFormat='MM/DD/YYYY';
 
Transactions:
Load
*
Inline
[
id,date,amount
8188,1/7/2022,17.17
8189,1/19/2022,37.23
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 a data de início do mês em que uma transação ocorre, crie as seguintes medidas:

* `=monthstart(date)`

* `=timestamp(monthstart(date))`

Tabela de resultados

| data | =monthstart(date) | =timestamp(monthstart(date)) |
| --- | --- | --- |
| 10/14/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
| 10/29/2022 | 10/01/2022 | 10/1/2022 12:00:00 AM |
| 9/26/2022 | 09/01/2022 | 9/1/2022 12:00:00 AM |
| 8/2/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
| 8/8/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
| 8/19/2022 | 08/01/2022 | 8/1/2022 12:00:00 AM |
| 7/9/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/22/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/23/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 7/27/2022 | 07/01/2022 | 7/1/2022 12:00:00 AM |
| 6/15/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 6/26/2022 | 06/01/2022 | 6/1/2022 12:00:00 AM |
| 5/7/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 5/16/2022 | 05/01/2022 | 5/1/2022 12:00:00 AM |
| 4/1/2022 | 04/01/2022 | 4/1/2022 12:00:00 AM |
| 3/16/2022 | 03/01/2022 | 3/1/2022 12:00:00 AM |
| 2/5/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
| 2/28/2022 | 02/01/2022 | 2/1/2022 12:00:00 AM |
| 1/7/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |
| 1/19/2022 | 01/01/2022 | 1/1/2022 12:00:00 AM |

A medida `start_of_month` é criada no objeto de gráfico usando a função `monthstart()` e transmitindo o campo de data como o argumento da função.

A função `monthstart()` identifica em qual mês o valor da data cai, retornando um carimbo de data/hora para o primeiro milissegundo desse mês.

Diagrama da função `monthstart()`, exemplo de objeto de gráfico

Diagrama da função `monthstart()`, exemplo de objeto de gráfico

Diagrama da função `monthstart()`monthstart(), exemplo de objeto de gráfico![Diagrama mostrando os resultados do uso da função monthstart para determinar o mês em que uma transação ocorreu.](https://help.qlik.com/pt-BR/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthstart-example-chart-object.png)

A transação 8192 ocorreu em 16 de março. A função `monthstart()` identifica que a transação ocorreu em março e retorna o primeiro milissegundo desse mês, que é 1º de março às 12:00:00 AM.

## Exemplo 4: Cenário

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

O script de carregamento contém:

* Um conjunto de dados contendo um conjunto de saldos de empréstimos, que é carregado em uma tabela denominada Loans.

* Dados que consistem em IDs de empréstimos, saldo no início do mês e taxa de juros simples cobrada em cada empréstimo por ano.

O usuário final deseja um objeto de gráfico que mostre, por ID de empréstimo, os juros atuais que foram acumulados em cada empréstimo no mês até o momento.

Script de carregamento

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

Loans:
Load
*
Inline
[
loan_id,start_balance,rate
8188,$10000.00,0.024
8189,$15000.00,0.057
8190,$17500.00,0.024
8191,$21000.00,0.034
8192,$90000.00,0.084
];
```

Resultados

Faça o seguinte:

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

   * loan\_id

   * start\_balance

2. Em seguida, crie uma medida para calcular os juros acumulados:

   =start\_balance\*(rate\*(today(1)-monthstart(today(1)))/365)

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

Tabela de resultados

| loan\_id | start\_balance | =start\_balance\*(rate\*(today(1)-monthstart(today(1)))/365) |
| --- | --- | --- |
| 8188 | $10000.00 | $16.44 |
| 8189 | $15000.00 | $58.56 |
| 8190 | $17500.00 | $28.77 |
| 8191 | $21000.00 | $48.90 |
| 8192 | $90000.00 | $517.81 |

A função monthstart(), usando a data de hoje como seu único argumento, retorna a data de início do mês atual. Ao subtrair esse resultado da data atual, a expressão retorna o número de dias decorridos até o momento neste mês.

Esse valor é então multiplicado pela taxa de juros e dividido por 365 para retornar a taxa de juros efetiva acumulada do período. O resultado é então multiplicado pelo saldo inicial do empréstimo para retornar os juros acumulados até o momento neste mês.