# inmonths Función de script y de gráfico

Esta función determina si una fecha-hora se encuentra dentro del mismo periodo mensual, bimensual, trimestral, cuatrimestre o semestral que fecha base. También es posible hallar si la fecha-hora cae dentro de un periodo anterior o posterior.

Sintaxis:

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

Tipo de datos que devuelve: Booleano

En Qlik Sense, el valor booleano verdadero viene representado por -1 y el valor falso está representado por 0.

Diagrama de la función `inmonths()`

Diagrama de la función `inmonths()`

Diagrama de la función `inmonths()`inmonths() ![Diagrama que muestra el intervalo de tiempo en el que la función inmonths() evaluará una fecha base como verdadera o falsa.](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-diagram1.png)

La función `inmonths()` divide el año en segmentos basándose en el argumento `n_months` proporcionado. Luego determina si cada marca de tiempo evaluada cae en el mismo segmento que el argumento de `base_date`. Sin embargo, si se proporciona un argumento `period_no`, la función determina si las marcas de tiempo caen en un período anterior o posterior a `base_date`.

Los siguientes segmentos del año están disponibles en la función `n_month` como argumentos.

Argumentos de `n_month`n\_month

| Periodo | Número de meses |
| --- | --- |
| mes | 1 |
| bimestre | 2 |
| trimestre | 3 |
| cuatrimestre | 4 |
| semestre | 6 |

Cuándo utilizar inmonths

La función `inmonths()` devuelve un resultado booleano. Normalmente, este tipo de función se utilizará como condición en una `if expression`. Mediante el uso de la función `inmonths()`, puede seleccionar el período que desea evaluar. Por ejemplo, permitir que el usuario identifique los productos fabricados en el mes, trimestre o semestre de un período determinado.

Tipo de datos que devuelve: Booleano

En Qlik Sense, el valor booleano verdadero viene representado por -1 y el valor falso está representado por 0.

Argumentos

| Argumento | Descripción |
| --- | --- |
| n\_months | El número de meses que define el periodo. Un entero o expresión que devuelve un entero que debe ser uno de los siguientes: 1 (equivalente a la función inmonth() ), 2 (bimestral), 3 (equivalente a la función inquarter()), 4 (cuatrimestral) o 6 (medio año). |
| timestamp | La fecha que desea comparar con base\_date. |
| base\_date | La fecha que se utiliza para evaluar el periodo. |
| period\_no | El período se puede desplazar mediante period\_no, un entero o una expresión que devuelve un entero, donde el valor 0 indica el período que contiene a base\_date. Los valores negativos en period\_no indican períodos precedentes y los valores positivos indican períodos subsiguientes. |
| first\_month\_of\_year | Si desea trabajar con años (fiscales) que no comiencen en enero, indique un valor entre 2 y 12 en first\_month\_of\_year. |

Puede utilizar los siguientes valores para establecer el primer mes del año en el argumento de `first_month_of_year`:

valores de first\_month\_of\_year

| Mes | Valor |
| --- | --- |
| Febrero | 2 |
| Marzo | 3 |
| Abril | 4 |
| Mayo | 5 |
| Junio | 6 |
| Julio | 7 |
| Agosto | 8 |
| Septiembre | 9 |
| Octubre | 10 |
| Noviembre | 11 |
| Diciembre | 12 |

## 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. Para más información, vea [Modificar la configuración regional para aplicaciones y scripts](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm).

La configuración regional predeterminada en las aplicaciones se basa en el perfil de usuario. Estos ajustes de formato regional no están relacionados con el idioma mostrado en la interfaz de usuario de Qlik Cloud. Qlik Cloud se mostrará en el mismo idioma que esté utilizando su navegador.

Si es un creador de aplicaciones, puede establecer la región por defecto para las aplicaciones que cree. Para más información, vea [Establecer sus configuraciones regionales preferidas para crear apps y scripts en Analítica de Qlik Cloud](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting).

Ejemplos de funciones

| Ejemplo | Resultado |
| --- | --- |
| `inmonths(4, '01/25/2013', '04/25/2013', 0)` | Devuelve TRUE. Porque el valor de la marca de tiempo 25/01/2013 se encuentra dentro del período de cuatro meses: 01/01/2013 a 30/04/2013, en el que se encuentra el valor de `base_date`, 25/04/2013. |
| `inmonths(4, '05/25/2013', '04/25/2013', 0)` | Devuelve FALSE. Porque el 25/05/2013 está fuera del mismo periodo que el ejemplo anterior. |
| `inmonths(4, '11/25/2012', '02/01/2013', -1 )` | Devuelve TRUE. Porque el valor de `period_no`, `-1`, desplaza el período de búsqueda hacia atrás un período de cuatro meses (el valor de n-meses), lo que hace que el período de búsqueda sea del 01/09/2012 al 31/12/2012. |
| `inmonths(4, '05/25/2006', '03/01/2006', 0, 3)` | Devuelve TRUE. Porque el valor de `first_month_of_year` está establecido en `3`, lo que hace que el período de búsqueda sea del 01/03/2006 al 30/07/2006 en lugar de 01/01/2006 al 30/04/2006. |

## Ejemplo 1: sin argumentos adicionales

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

#### Script de carga y resultados

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

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

* Una instrucción load anterior con una variable adicional, "`in_months`’", que determina qué transacciones tuvieron lugar en el mismo trimestre que el 15 de mayo de 2022.

Script de carga

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

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

* `date`
* `in_months`

Tabla de resultados

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

El campo "`in_months`" se crea en la instrucción load anterior, mediante el uso de la función `inmonths()`. El primer argumento proporcionado es `3`, que divide el año en segmentos trimestrales. El segundo argumento identifica qué campo se está evaluando, el campo de fecha en este ejemplo. El tercer argumento es una fecha codificada para el 15 de mayo, que constituye la `base_date` y un `period_no` de `0` es el argumento final.

Diagrama de la función `inmonths()` con segmentos trimestrales

Diagrama de la función `inmonths()` con segmentos trimestrales

Diagrama de la función `inmonths()`inmonths() con segmentos trimestrales ![Diagrama que muestra el intervalo de tiempo que evalúa la función inmonths() con el 15 de mayo como fecha base y el año dividido en segmentos trimestrales.](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-examples1_and4-diagram.png)

Mayo cae en el segundo trimestre del año. Por lo tanto, cualquier transacción que ocurra entre el 1 de abril y el 30 de junio devolverá un resultado booleano de TRUE. Esto se valida en la tabla de resultados.

## Ejemplo 2: period\_no

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

#### Script de carga y resultados

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

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

* Un load precedente con una variable adicional, "`previous_quarter`", que determina si las transacciones se realizaron en el trimestre anterior al 15 de mayo de 2022.

Script de carga

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

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

* `date`
* `previous_quarter`

Tabla de resultados

| date | trimestre anterior |
| --- | --- |
| 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 |

La función evalúa si las transacciones ocurrieron en el primer trimestre del año utilizando `-1` como el argumento de `period_no` en la función `inmonths()`. El 15 de mayo es la `base_date` y cae en el segundo trimestre del año (abril-junio).

Diagrama de la función `inmonths()` con segmentos trimestrales y el `period_no` establecido en `-1`

Diagrama de la función `inmonths()` con segmentos trimestrales y el `period_no` establecido en `-1`

Diagrama de la función `inmonths()`inmonths() con segmentos trimestrales y el `period_no`period\_no establecido en `-1`-1 ![Diagrama que muestra el intervalo de tiempo que evalúa la función inmonths() con el 15 de mayo como fecha base y el año dividido en segmentos trimestrales y el period_no establecido en -1 que define el rango de tiempo hacia atrás en un trimestre.](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-example2-diagram.png)

Por lo tanto, cualquier transacción que ocurra entre enero y marzo devolverá un resultado booleano de TRUE.

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

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

#### Script de carga y resultados

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

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

* Una instrucción load anterior con una variable adicional, "`in_months`’", que determina qué transacciones tuvieron lugar en el mismo trimestre que el 15 de mayo de 2022.

En este ejemplo, la política de la organización es que marzo sea el primer mes del año fiscal.

Script de carga

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

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

* `date`
* `in_months`

Tabla de resultados

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

Al utilizar `3` como argumento de `first_month_of_year` en la función `inmonths()`, esta comienza el año el 1 de marzo. A continuación, la función `inmonths()` divide el año en trimestres: Mar-Mayo, Jun-Ago, Sep-Nov, Dic-Feb. Por lo tanto, el 15 de mayo cae en el primer trimestre del año (marzo-mayo).

Diagrama de la función `inmonths()` con marzo fijado como primer mes del año.

Diagrama de la función `inmonths()` con marzo fijado como primer mes del año.

Diagrama de la función `inmonths()`inmonths() con marzo fijado como primer mes del año. ![Diagrama que muestra el intervalo de tiempo que evalúa la función inmonths() con el 15 de mayo como fecha base, el año dividido en segmentos trimestrales y marzo establecido como primer mes del año.](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-example3-diagram.png)

Cualquier transacción que ocurra en estos meses devolverá un resultado booleano de TRUE.

## Ejemplo 4: ejemplo de objeto gráfico

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

Sin embargo, en este ejemplo, el conjunto de datos sin modificar se carga en la aplicación. El cálculo que determina si las transacciones se realizaron en el mismo trimestre que el 15 de mayo de 2022 se crea como una medida en un gráfico de la aplicación.

Script de carga

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

Cargue los datos y abra una hoja. Cree una nueva tabla y agregue este campo como dimensión:

* `date`

Para calcular si las transacciones se realizaron en el mismo trimestre que el 15 de mayo, cree la siguiente medida:

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

Tabla de resultados

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

El campo "`in_months`" se crea en el gráfico mediante la función `inmonths()`. El primer argumento proporcionado es `3`, que divide el año en segmentos trimestrales. El segundo argumento identifica qué campo se está evaluando, el campo de fecha en este ejemplo. El tercer argumento es una fecha codificada para el 15 de mayo, que constituye la `base_date` y un `period_no` de `0` es el argumento final.

Diagrama de la función `inmonths()` con segmentos trimestrales

Diagrama de la función `inmonths()` con segmentos trimestrales

Diagrama de la función `inmonths()`inmonths() con segmentos trimestrales ![Diagrama que muestra el intervalo de tiempo que evalúa la función inmonths() con el 15 de mayo como fecha base y el año dividido en segmentos trimestrales.](https://help.qlik.com/es-ES/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonths-examples1_and4-diagram.png)

Mayo cae en el segundo trimestre del año. Por lo tanto, cualquier transacción que ocurra entre el 1 de abril y el 30 de junio devolverá un resultado booleano de TRUE. Esto se valida en la tabla de resultados.

## Ejemplo 5: Escenario

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

#### Script de carga y resultados

Vista general

Abra el Editor de carga de datos y añada el script de carga inferior en una nueva sección.

El script de carga contiene:

* Un conjunto de datos que se carga en una tabla denominada "Products".

* La tabla contiene los siguientes campos:

  * ID de producto

  * tipo de producto

  * fecha de fabricación

  * precio de coste

Al usuario final le gustaría tener un objeto gráfico que muestre, por tipo de producto, el coste de producción de los productos fabricados en el primer segmento de 2021. Al usuario le gustaría poder definir la longitud de este segmento.

Script de carga

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

Cargue los datos y abra una hoja.

Al comienzo del script de carga se crea una variable, vPeriod, que se vinculará al control de entrada de la variable.

Haga lo siguiente:

1. En el panel de activos, haga clic en Gráficos.

2. En Objetos de panel, arrastre un Entrada de variable a la hoja.

3. Escriba un título para el objeto gráfico.

4. En Variable, seleccione vPeriod como nombre y configure el objeto para que se muestre como un Menú desplegable.

5. En Valores, haga clic en Valores dinámicos. Inserte lo siguiente:

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

6. Agregue una nueva tabla a la hoja.

7. En el panel de propiedades, en Datos, añada product\_type como dimensión.

8. Agregue la siguiente expresión como medida:

   =sum(if(inmonths($(vPeriod),manufacture\_date,makedate(2022,01,01),0),cost\_price,0))

9. Establezca el Formato numérico de la medida en Moneda.

Tabla de resultados

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

La función inmonths() utiliza la entrada del usuario como argumento para definir el tamaño del segmento inicial del año. La función introduce la fecha de fabricación de cada uno de los productos como segundo argumento de la función inmonths(). Al usar el 1 de enero como tercer argumento de la función inmonths(), los productos con fechas de fabricación que caen en el segmento de apertura del año devolverán un valor booleano de TRUE y, por lo tanto, la función de suma agregará los costes de fabricación de esos productos.