# monthend - función de script y de gráfico

Esta función devuelve un valor correspondiente a una marca de tiempo (fecha-hora) del último milisegundo del último día del mes que contiene a `date`. El formato de salida predeterminado será el `DateFormat` establecido en el script.

Sintaxis:

MonthEnd(date[, period\_no])

En otras palabras, la función `monthend()` determina en qué mes cae la fecha. Luego devuelve una marca de tiempo, en formato de fecha, con el último milisegundo de ese mes.

Diagrama de la función `monthend`.

Diagrama de la función `monthend`.

Diagrama de la función `monthend`monthend. ![Diagrama que muestra cómo se puede usar la función monthend para identificar la última marca de tiempo de un mes elegido.](https://help.qlik.com/es-ES/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthend-diagram1.png)

Cuándo se utiliza

La función `monthend()` se usa como parte de una expresión cuando deseamos que el cálculo utilice la fracción del mes que aún no ha ocurrido. Por ejemplo, si desea calcular el interés total aún no devengado durante el mes.

Tipo de datos que devuelve: dual

Argumentos

| Argumento | Descripción |
| --- | --- |
| date | La fecha o marca de tiempo para evaluar. |
| period\_no | period\_no es un número entero que, si es 0 o se omite, indica el mes que contiene date. Los valores negativos en period\_no indican meses precedentes y los valores positivos indican meses subsiguientes. |

## Configuraciones regionales

A menos que se especifique algo distinto, los ejemplos de este tema utilizan el siguiente formato de fecha: MM/DD/YYYY. El formato de fecha se especifica en la sentencia `SET DateFormat` de su script de carga de datos. El formato de fecha predeterminado puede ser diferente en su sistema, debido a su configuración regional y otros factores. Puede cambiar el formato en los ejemplos a continuación para ajustarlo a sus necesidades. O puede cambiar los formatos en su script de carga para que coincidan con estos ejemplos.

La configuración regional predeterminada en las aps se basa en la configuración del sistema regional de la computadora o servidor donde esté instalado Qlik Sense. Si el servidor de Qlik Sense al que está accediendo está configurado en Suecia, el editor de carga de datos utilizará la configuración regional sueca para las fechas, la hora y la moneda. Estos ajustes de formato regional no están relacionados con el idioma mostrado en la interfaz de usuario de Qlik Sense. Qlik Sense se mostrará en el mismo idioma que esté utilizando en su navegador.

Ejemplos de funciones

| Ejemplo | Resultado |
| --- | --- |
| `monthend('02/19/2012')` | Devuelve 02/29/2012 23:59:59. |
| `monthend('02/19/2001', -1)` | Devuelve 01/31/2001 23:59:59. |

## Ejemplo 1: ejemplo básico

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

#### Script de carga y resultados

Vista general

Abra el editor de carga de datos y agregue el script de carga a continuación a una nueva pestaña.

El script de carga contiene:

* Un conjunto de datos que contiene una serie de transacciones de 2022 que se carga en una tabla llamada "`Transactions`".

* Un campo de fecha con el formato de la variable del sistema `DateFormat` (`MM/DD/YYYY`).

* Una instrucción load anterior que contiene lo siguiente:

  * La función `monthend()` que está definida como el campo "`end_of_month`".

  * La función `timestamp` que está definida como el campo "`end_of_month_timestamp`".

Script de carga

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

Transactions: 
    Load 
    *, 
    monthend(date) as end_of_month, 
    timestamp(monthend(date)) as end_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

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:

* `id`
* `date`
* `end_of_month`
* `end_of_month_timestamp`

Tabla de resultados

| id | date | end\_of\_month | end\_of\_month\_timestamp |
| --- | --- | --- | --- |
| 8188 | 1/7/2022 | 01/31/2022 | 1/31/2022 11:59:59 PM |
| 8189 | 1/19/2022 | 01/31/2022 | 1/31/2022 11:59:59 PM |
| 8190 | 2/5/2022 | 02/28/2022 | 2/28/2022 11:59:59 PM |
| 8191 | 2/28/2022 | 02/28/2022 | 2/28/2022 11:59:59 PM |
| 8192 | 3/16/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
| 8193 | 4/1/2022 | 04/30/2022 | 4/30/2022 11:59:59 PM |
| 8194 | 5/7/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
| 8195 | 5/16/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
| 8196 | 6/15/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
| 8197 | 6/26/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
| 8198 | 7/9/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8199 | 7/22/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8200 | 7/23/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8201 | 7/27/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8202 | 8/2/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
| 8203 | 8/8/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
| 8204 | 8/19/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
| 8205 | 9/26/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
| 8206 | 10/14/2022 | 10/31/2022 | 10/31/2022 11:59:59 PM |
| 8207 | 10/29/2022 | 10/31/2022 | 10/31/2022 11:59:59 PM |

El campo `end_of_month` se crea en la instrucción load anterior utilizando la función `monthend()` e introduciendo el campo de fecha como argumento de la función.

La función `monthend()` identifica en qué mes del año cae el valor de la fecha y devuelve una marca de tiempo del último milisegundo de ese mes.

Diagrama de la función `monthend` con marzo como el mes seleccionado.

Diagrama de la función `monthend` con marzo como el mes seleccionado.

Diagrama de la función `monthend`monthend con marzo como el mes seleccionado.![Diagrama que muestra cómo se puede usar la función monthend para identificar la última marca de tiempo de un mes elegido.](https://help.qlik.com/es-ES/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthend-example1-diagram.png)

La transacción 8192 tuvo lugar el 16 de marzo. La función `monthend()` devuelve el último milisegundo de ese mes, que es el 31 de marzo a las 23:59:59.

## Ejemplo 2: period\_no

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

#### Script de carga y resultados

Vista general

Se utilizan el mismo conjunto de datos y el mismo escenario que en el primer ejemplo.

En este ejemplo, la tarea es crear un campo, "`previous_month_end`'', que devuelva la marca de tiempo del final del mes anterior a la transacción.

Script de carga

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
    *, 
    monthend(date,-1) as previous_month_end, 
    timestamp(monthend(date,-1)) as previous_month_end_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

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:

* `id`
* `date`
* `previous_month_end`
* `previous_month_end_timestamp`

Tabla de resultados

| id | date | previous\_month\_end | previous\_month\_end\_timestamp |
| --- | --- | --- | --- |
| 8188 | 1/7/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8189 | 1/19/2022 | 12/31/2021 | 12/31/2021 11:59:59 PM |
| 8190 | 2/5/2022 | 01/31/2022 | 1/31/2022 11:59:59 PM |
| 8191 | 2/28/2022 | 01/31/2022 | 1/31/2022 11:59:59 PM |
| 8192 | 3/16/2022 | 02/28/2022 | 2/28/2022 11:59:59 PM |
| 8193 | 4/1/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
| 8194 | 5/7/2022 | 04/30/2022 | 4/30/2022 11:59:59 PM |
| 8195 | 5/16/2022 | 04/30/2022 | 4/30/2022 11:59:59 PM |
| 8196 | 6/15/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
| 8197 | 6/26/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
| 8198 | 7/9/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
| 8199 | 7/22/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
| 8200 | 7/23/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
| 8201 | 7/27/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
| 8202 | 8/2/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8203 | 8/8/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8204 | 8/19/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8205 | 9/26/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
| 8206 | 10/14/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
| 8207 | 10/29/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |

La función `monthend()` identifica primero el mes en que se realizan las transacciones, ya que se ha utilizado un `period_no` de `-1` como argumento del desplazamiento. Luego cambia a un mes antes e identifica el último milisegundo de ese mes.

Diagrama de la función `monthend` con la variable period\_no.

Diagrama de la función `monthend` con la variable period\_no.

Diagrama de la función `monthend`monthend con la variable period\_no.![Diagrama que muestra cómo se puede usar la función monthend con la variable period_no para identificar la última marca de tiempo del mes anterior al establecido en la función monthend().](https://help.qlik.com/es-ES/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthend-example2-diagram.png)

La transacción 8192 tuvo lugar el 16 de marzo. La función `monthend()` identifica que el mes anterior a la transacción fue febrero. Luego devuelve el último milisegundo de ese mes, el 28 de febrero a las 23:59:59.

## Ejemplo 3: ejemplo gráfico

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

#### Script de carga y expresión de gráfico

Vista general

Se utilizan el mismo conjunto de datos y el mismo escenario que en el primer ejemplo.

En este ejemplo el conjunto de datos está sin modificar y cargado en la app. La tarea es crear un cálculo que devuelve una marca de tiempo del final de mes en que se realizaron las transacciones como una medida en un gráfico de la app.

Script de carga

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

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:

* `date`

* `id`

Para calcular la fecha de fin del mes en el que tiene lugar una transacción, cree las siguientes medidas:

* `=monthend(date)`
* `=timestamp(monthend(date))`

Tabla de resultados

| id | date | =monthend(date) | =timestamp(monthend(date)) |
| --- | --- | --- | --- |
| 8188 | 10/14/2022 | 10/31/2022 | 10/31/2022 11:59:59 PM |
| 8189 | 10/29/2022 | 10/31/2022 | 10/31/2022 11:59:59 PM |
| 8190 | 9/26/2022 | 09/30/2022 | 9/30/2022 11:59:59 PM |
| 8191 | 8/2/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
| 8192 | 8/8/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
| 8193 | 8/19/2022 | 08/31/2022 | 8/31/2022 11:59:59 PM |
| 8194 | 7/9/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8195 | 7/22/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8196 | 7/23/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8197 | 7/27/2022 | 07/31/2022 | 7/31/2022 11:59:59 PM |
| 8198 | 6/15/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
| 8199 | 6/26/2022 | 06/30/2022 | 6/30/2022 11:59:59 PM |
| 8200 | 5/7/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
| 8201 | 5/16/2022 | 05/31/2022 | 5/31/2022 11:59:59 PM |
| 8202 | 4/1/2022 | 04/30/2022 | 4/30/2022 11:59:59 PM |
| 8203 | 3/16/2022 | 03/31/2022 | 3/31/2022 11:59:59 PM |
| 8204 | 2/5/2022 | 02/28/2022 | 2/28/2022 11:59:59 PM |
| 8205 | 2/28/2022 | 02/28/2022 | 2/28/2022 11:59:59 PM |
| 8206 | 1/7/2022 | 01/31/2022 | 1/31/2022 11:59:59 PM |
| 8207 | 1/19/2022 | 01/31/2022 | 1/31/2022 11:59:59 PM |

La medida "`end_of_month`" se crea en el gráfico utilizando la función `monthend()` e indicando el campo de fecha como argumento de la función.

La función `monthend()` identifica en qué mes del año cae el valor de la fecha y devuelve una marca de tiempo del último milisegundo de ese mes.

Diagrama de la función `monthend` con la variable period\_no.

Diagrama de la función `monthend` con la variable period\_no.

Diagrama de la función `monthend`monthend con la variable period\_no.![](https://help.qlik.com/es-ES/sense/November2024/Subsystems/Hub/Content/Resources/Images/scripting-functions-monthend-example3-diagram.png)

La transacción 8192 tuvo lugar el 16 de marzo. La función `monthend()` devuelve el último milisegundo de ese mes, que es el 31 de marzo a las 23:59:59.

## Ejemplo 4: Escenario

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

#### Script de carga y resultados

Vista general

En este ejemplo, un conjunto de datos se carga en una tabla denominada "`Employee_Expenses`". La tabla contiene los siguientes campos:

* Employee IDs

* Employee names

* Las reclamaciones de gastos diarios promedio de cada empleado.

Al usuario final le gustaría tener un gráfico que muestre, por ID y nombre de empleado, la declaración de gastos estimada para el resto del mes.

Script de carga

```
Employee_Expenses: 
Load 
* 
Inline  
[ 
employee_id,employee_name,avg_daily_claim 
182,Mark, $15 
183,Deryck, $12.5  
184,Dexter, $12.5 
185,Sydney,$27 
186,Agatha,$18 
]; 
```

Resultados

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue estos campos como dimensiones:

* `employee_id`
* `employee_name`

Para calcular el interés acumulado, cree esta medida:

`=floor(monthend(today(1),0)-today(1))*avg_daily_claim`

Nota informativaEsta medida es dinámica y producirá diferentes resultados en la tabla dependiendo de la fecha en que cargue los datos.

Defina el Formato numérico de la medida en Moneda.

Tabla de resultados

| employee\_id | employee\_name | =floor(monthend(today(1),0)-today(1))\*avg\_daily\_claim |
| --- | --- | --- |
| 182 | Mark | $30.00 |
| 183 | Deryck | $25.00 |
| 184 | Dexter | $25.00 |
| 185 | Sydney | $54.00 |
| 186 | Agatha | $36.00 |

La función `monthend()` devuelve la fecha de finalización del mes actual utilizando la fecha de hoy como único argumento. La expresión devuelve el número de días que quedan de este mes al restar la fecha de hoy de la fecha de finalización del mes.

Luego, este valor se multiplica por la reclamación de gastos diarios promedio de cada empleado para calcular el valor estimado de las reclamaciones de gastos que se espera que haga cada empleado en el mes restante.