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

Esta función determina si una fecha-hora se encuentra dentro de la parte de un período mensual, bimensual, trimestral, cuatrimestral o semestral hasta e incluyendo el último milisegundo de `base_date`. 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

Diagrama de la función `inmonthstodate`.

Diagrama de la función `inmonthstodate`.

Diagrama de la función `inmonthstodate`inmonthstodate. ![Diagrama que muestra cómo se puede usar la función inmonthstodate para identificar si una marca de tiempo se encuentra dentro o fuera de un segmento de tiempo establecido.](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-diagram1.png)

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

En la función `inmonthstodate()`, la `base_date` actúa como el punto final del segmento de año en particular del que forma parte.

Por ejemplo, si el año se dividió en segmentos cuatrimestrales y la `base_date` era el 15 de mayo, cualquier marca de tiempo entre el comienzo de enero y el final de abril devolvería un resultado booleano de FALSE. Las fechas entre el 1 y el 15 de mayo devolverían TRUE. El resto del año devolvería FALSE.

Diagrama del rango de resultados booleanos de la función `inmonthstodate`.

Diagrama del rango de resultados booleanos de la función `inmonthstodate`.

Diagrama del rango de resultados booleanos de la función `inmonthstodate`inmonthstodate. ![Diagrama que muestra el rango de resultados booleanos de la función inmonthstodate.](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-diagram2.png)

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 se utiliza

La función `inmonthstodate()` devuelve un resultado booleano. Normalmente, este tipo de función se utiliza como condición en una expresión condicional (`if expression`). Mediante el uso de la función `inmonthstodate()`, puede seleccionar el período que desea evaluar. Por ejemplo, proporcionar una variable de entrada que permita al usuario identificar los productos fabricados en el mes, trimestre o semestre de un período, hasta una fecha determinada.

## 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 |
| --- | --- |
| `inmonthstodate(4, '01/25/2013', '04/25/2013',<br>0)` | Devuelve True, porque el valor de timestamp, 01/25/2013, cae dentro del período de cuatro meses, del 01/01/2013 hasta el final de 04/25/2013, en el que se encuentra el valor de base\_date, 04/25/2013. |
| `inmonthstodate(4, '04/26/2013', '04/25/2006',<br>0)` | Devuelve False, porque 04/26/2013 está fuera del mismo período que el ejemplo anterior. |
| `inmonthstodate(4, '09/25/2005', '02/01/2006',<br>-1)` | Devuelve True, porque el valor de period\_no, -1, desplaza el período de búsqueda un período de cuatro meses atrás (el valor de n-months), lo que hace que el período de búsqueda sea del 01/09/2005 al 02/01/2006. |
| `inmonthstodate(4, '04/25/2006', '06/01/2006',<br>0, 3)` | Devuelve True, porque el valor de first\_month\_of\_year está configurado en 3, lo que hace que el período de búsqueda sea del 03/01/2006 al 06/01/2006, en lugar del 05/01/2006 al 06/01/2006. |

## Ejemplo 1: sin argumentos adicionales

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inmonthstodate.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 una serie de transacciones de 2022 que se carga en una tabla llamada "`Transactions`".

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

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

  * La función `inmonthstodate()` que está configurada como el campo "`in_months_to_date`". Esto determina qué transacciones se realizaron en el trimestre hasta el 15 de mayo de 2022.

Script de carga

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

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

* `date`
* `in_months_to_date`

Tabla de resultados

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

El campo "`in_months_to_date`" se crea en la instrucción load anterior mediante el uso de la función `inmonthstodate()`.

El primer argumento proporcionado es `3`, que divide el año en segmentos trimestrales. El segundo argumento identifica qué campo se está evaluando. El tercer argumento es una fecha codificada para el 15 de mayo, que es la `base_date` que define el límite final del segmento. Un `period_no` de `0` es el argumento final.

Diagrama de la función `inmonthstodate`, sin argumentos adicionales.

Diagrama de la función `inmonthstodate`, sin argumentos adicionales.

Diagrama de la función `inmonthstodate`inmonthstodate, sin argumentos adicionales. ![Diagrama que muestra el rango de transacciones que la función inmonthstodate identifica como TRUE.](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-diagram2.png)

Cualquier transacción que ocurra entre el 1 de abril y el 15 de mayo devuelve un resultado booleano de TRUE. Las fechas de transacciones fuera de ese período devuelven FALSE.

## Ejemplo 2: period\_no

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

#### Script de carga y resultados

Vista general

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

Sin embargo, en este ejemplo, la tarea es crear un campo, "`previous_qtr_to_date`", que determine si las transacciones se realizaron un trimestre antes del 15 de mayo.

Script de carga

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

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

* `date`

* `previous_qtr_to_date`

Tabla de resultados

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

Utilizando `-1` como el argumento de `period_no` en la función `inmonthstodate()`, la función desplaza los límites del segmento del año de comparación en un trimestre.

El 15 de mayo cae en el segundo trimestre del año y por lo tanto el segmento inicialmente equivale al período entre el 1 de abril y el 15 de mayo. El argumento de `period_no` desplaza este segmento en tres meses negativos. Los límites de fecha pasan a ser del 1 de enero al 15 de febrero.

Diagrama de la función `inmonthstodate` con un period\_no de -1.

Diagrama de la función `inmonthstodate` con un period\_no de -1.

Diagrama de la función `inmonthstodate`inmonthstodate con un period\_no de -1. ![Diagrama que muestra el rango de transacciones con el argumento de period_no establecido en -1.](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-example2-diagram.png)

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

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

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inmonthstodate.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 política de la organización es que marzo sea el primer mes del año fiscal.

Cree un campo, "`in_months_to_date`", que determine qué transacciones se realizaron en el mismo trimestre hasta el 15 de mayo de 2022.

Script de carga

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

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

* `date`

* `in_months_to_date`

Tabla de resultados

| date | 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 el argumento de `first_month_of_year` en la función `inmonthstodate()`, la función comienza el año el 1 de marzo y después divide el año en trimestres según lo proporcionado en el primer argumento. Por lo tanto, los segmentos del cuatrimestre son:

* Mar-May

* Jun-Ago

* Sep-Nov

* Dic-Feb

La `base_date` del 15 de mayo segmenta a continuación el trimestre de marzo a mayo estableciendo su límite final en el 15 de mayo.

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

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

Diagrama de la función `inmonthstodate`inmonthstodate con marzo fijado como primer mes del año. ![Diagrama que muestra el rango de transacciones con el primer mes del año establecido en marzo.](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-example3-diagram.png)

Por lo tanto, cualquier transacción que ocurra entre el 1 de marzo y el 15 de mayo arrojará un resultado booleano de TRUE, y las transacciones que tengan fechas fuera de estos límites arrojarán un valor de FALSE.

## Ejemplo 4: ejemplo de gráfico

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inmonthstodate.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 determine si las transacciones se realizaron en el mismo trimestre que el 15 de mayo como medida en un gráfico de la app.

Script de carga

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

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:

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

Tabla de resultados

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

La medida "`‘in_months_to_date`" se crea en el gráfico usando la función `inmonthstodate()`.

El primer argumento proporcionado es `3`, que divide el año en segmentos trimestrales. El segundo argumento identifica qué campo se está evaluando. El tercer argumento es una fecha codificada del 15 de mayo, que es la `base_date` que define el límite final del segmento. Un `period_no` de `0` es el argumento final.

Diagrama de la función `inmonthstodate` con segmentos trimestrales.

Diagrama de la función `inmonthstodate` con segmentos trimestrales.

Diagrama de la función `inmonthstodate`inmonthstodate con segmentos trimestrales.![Diagrama que muestra el rango de transacciones que devuelven un valor booleano TRUE.](https://help.qlik.com/es-ES/sense/May2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-example4-diagram.png)

Cualquier transacción que ocurra entre el 1 de abril y el 15 de mayo devolverá un resultado booleano de TRUE. Las fechas de transacción fuera de ese segmento devolverán FALSE.

## Ejemplo 5: Escenario

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

#### Script de carga y resultados

Vista general

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

* ID de producto

* Tipo de producto

* Fecha de venta

* Precio de venta

Al usuario final le gustaría tener un gráfico que muestre, por tipo de producto, las ventas de productos que se produjeron en el período anterior al 24 de diciembre de 2022. Al usuario le gustaría poder definir la duración de ese período.

Script de carga

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

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

2. Seleccione Qlik Dashboard bundle y agregue una Entrada de variable a su hoja.

3. Escriba un título para el 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. Escriba 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. Añada la siguiente expresión como medida:

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

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

Tabla de resultados

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

La función inmonthstodate() 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 venta de cada uno de los productos como segundo argumento de la función inmonthstodate(). Al usar el 24 de diciembre como tercer argumento de la función inmonthstodate(), los productos con fechas de venta que ocurren en el período definido hasta el 24 de diciembre inclusive, devuelven un valor booleano de TRUE. La función sum suma las ventas de estos productos.