# lunarweekend - Función de script y de gráfico

Esta función devuelve un valor correspondiente a una marca de tiempo del último milisegundo del último día de la semana lunar que contiene a date. Las semanas lunares en Qlik Sense se definen contando el 1 de enero como el primer día de la semana y, aparte de la última semana del año, contendrán exactamente siete días.

Sintaxis:

LunarweekEnd(date[, period\_no[, first\_week\_day]])

Tipo de datos que devuelve: dual

Ejemplo de diagrama de la función `lunarweekend()`

Ejemplo de diagrama de la función `lunarweekend()`

Ejemplo de diagrama de la función `lunarweekend()`lunarweekend() ![Añadir texto aquí](https://help.qlik.com/es-ES/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekend-general.png)

La función `lunarweekend()` determina en qué semana lunar cae `date`. Luego devuelve una marca de tiempo, en formato de fecha, con el último milisegundo de esa semana.

Argumentos

| Argumento | Descripción |
| --- | --- |
| date | La fecha o marca de tiempo para evaluar. |
| period\_no | period\_no es un entero o expresión que devuelve un entero, donde el valor 0 indica la semana lunar que contiene a date. Los valores negativos en period\_no indican semanas lunares precedentes y los valores positivos indican semanas lunares subsiguientes. |
| first\_week\_day | Un desplazamiento que puede ser mayor que o menor que cero. Esto cambia el comienzo del año por el número especificado de días y/o fracciones de un día. |

## Cuándo se utiliza

La función `lunarweekend()` se suele utilizar como parte de una expresión cuando el usuario desea que el cálculo utilice la fracción del día que aún no ha transcurrido. A diferencia de la función `weekend()`, la última semana lunar de cada año natural finalizará el 31 de diciembre. Por ejemplo, la función `lunarweekend()` se puede utilizar para calcular los intereses que aún no se han devengado durante la semana.

Ejemplos de funciones

| Ejemplo | Resultado |
| --- | --- |
| `lunarweekend('01/12/2013')` | Devuelve 01/14/2013 23:59:59. |
| `lunarweekend('01/12/2013', -1)` | Devuelve 01/07/2013 23:59:59. |
| `lunarweekend('01/12/2013', 0, 1)` | Devuelve 01/15/2013 23:59:59. |

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

## Ejemplo 1: sin argumentos adicionales

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

* El campo de fecha proporcionado en el formato de la variable del sistema `DateFormat`: (MM/DD/AAAA).

* La creación de un campo, `  end_of_week `, que devuelve una marca de tiempo del final de la semana lunar en que las transacciones tuvieron lugar.

Script de carga

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

Transactions:
    Load
        *,
        lunarweekend(date) as end_of_week,
        timestamp(lunarweekend(date)) as end_of_week_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:

* `date`

* `end_of_week`

* `end_of_week_timestamp`

Tabla de resultados

| date | end\_of\_week | end\_of\_week\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 01/07/2022 | 1/7/2022 11:59:59 PM |
| 1/19/2022 | 01/21/2022 | 1/21/2022 11:59:59 PM |
| 2/5/2022 | 02/11/2022 | 2/11/2022 11:59:59 PM |
| 2/28/2022 | 03/04/2022 | 3/4/2022 23:59:59 |
| 3/16/2022 | 03/18/2022 | 18/3/2022 23:59:59 |
| 4/1/2022 | 04/01/2022 | 4/1/2022 11:59:59 PM |
| 5/7/2022 | 05/13/2022 | 13/5/2022 23:59:59 |
| 5/16/2022 | 05/20/2022 | 20/5/2022 23:59:59 |
| 6/15/2022 | 06/17/2022 | 17/6/2022 23:59:59 |
| 6/26/2022 | 07/01/2022 | 7/1/2022 11:59:59 PM |
| 7/9/2022 | 07/15/2022 | 15/7/2022 23:59:59 |
| 7/22/2022 | 07/22/2022 | 22/7/2022 23:59:59 |
| 7/23/2022 | 07/29/2022 | 29/7/2022 23:59:59 |
| 7/27/2022 | 07/29/2022 | 29/7/2022 23:59:59 |
| 8/2/2022 | 08/05/2022 | 8/5/2022 11:59:59 PM |
| 8/8/2022 | 08/12/2022 | 8/12/2022 11:59:59 PM |
| 8/19/2022 | 08/19/2022 | 19/8/2022 23:59:59 |
| 9/26/2022 | 09/30/2022 | 30/9/2022 23:59:59 |
| 10/14/2022 | 10/14/2022 | 14/10/2022 23:59:59 |
| 10/29/2022 | 11/04/2022 | 11/4/2022 11:59:59 PM |

El campo `end_of_week` se crea en la instrucción load anterior utilizando la función `lunarweekend()` e introduciendo el campo `date` como argumento de la función.

La función `lunarweekend()` identifica en qué semana lunar cae el valor de la fecha y devuelve una marca de tiempo del último milisegundo de esa semana.

Diagrama de la función `lunarweekend()`, ejemplo sin argumentos adicionales

Diagrama de la función `lunarweekend()`, ejemplo sin argumentos adicionales

Diagrama de la función `lunarweekend()`lunarweekend(), ejemplo sin argumentos adicionales![Diagrama que muestra cómo la función lunarweekend convierte la fecha de entrada de cada transacción en una marca de tiempo del último milisegundo de la semana lunar en que se produce esa fecha.](https://help.qlik.com/es-ES/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekend-examples-no-add-arg.png)

La transacción 8189 tuvo lugar el 19 de enero. La función `lunarweekend()` identifica que la semana lunar comienza el 15 de enero. Por lo tanto, el valor `end_of_week` de esa transacción devuelve el último milisegundo de la semana lunar, que es el 21 de enero a las 23:59:59.

## Ejemplo 2: period\_no

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

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

* La creación de un campo, `previous_lunar_week_end`, que devuelve la marca de tiempo del final de la semana lunar anterior a la transacción.

Script de carga

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

Transactions:
    Load
        *,
        lunarweekend(date,-1) as previous_lunar_week_end,
        timestamp(lunarweekend(date,-1)) as previous_lunar_week_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:

* `date`

* `previous_lunar_week_end`

* `previous_lunar_week_end_timestamp`

Tabla de resultados

| date | previous\_lunar\_week\_end | previous\_lunar\_week\_end\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 12/31/2021 | 31/12/2021 23:59:59 |
| 1/19/2022 | 01/14/2022 | 1/14/2022 11:59:59 PM |
| 2/5/2022 | 02/04/2022 | 2/4/2022 11:59:59 PM |
| 2/28/2022 | 02/25/2022 | 2/25/2022 11:59:59 PM |
| 3/16/2022 | 03/11/2022 | 18/3/2022 23:59:59 |
| 4/1/2022 | 03/25/2022 | 3/25/2022 11:59:59 PM |
| 5/7/2022 | 05/06/2022 | 5/6/2022 11:59:59 PM |
| 5/16/2022 | 05/13/2022 | 13/5/2022 23:59:59 |
| 6/15/2022 | 06/10/2022 | 6/10/2022 11:59:59 PM |
| 6/26/2022 | 06/24/2022 | 24/6/2022 23:59:59 |
| 7/9/2022 | 07/08/2022 | 7/8/2022 11:59:59 PM |
| 7/22/2022 | 07/15/2022 | 15/7/2022 23:59:59 |
| 7/23/2022 | 07/22/2022 | 22/7/2022 23:59:59 |
| 7/27/2022 | 07/22/2022 | 22/7/2022 23:59:59 |
| 8/2/2022 | 07/29/2022 | 29/7/2022 23:59:59 |
| 8/8/2022 | 08/05/2022 | 8/5/2022 11:59:59 PM |
| 8/19/2022 | 08/12/2022 | 8/12/2022 11:59:59 PM |
| 9/26/2022 | 09/23/2022 | 9/23/2022 11:59:59 PM |
| 10/14/2022 | 10/07/2022 | 10/7/2022 11:59:59 PM |
| 10/29/2022 | 10/28/2022 | 28/10/2022 23:59:59 |

En este caso, debido a que se usó un `period_no` de -1 como argumento del desplazamiento en la función `lunarweekend()`, la función primero identifica la semana lunar en la que se realizaron las transacciones. Luego se desplaza a una semana antes e identifica el último milisegundo de esa semana.

Diagrama de la función `lunarweekend()`, ejemplo de period\_no

Diagrama de la función `lunarweekend()`, ejemplo de period\_no

Diagrama de la función `lunarweekend()`lunarweekend(), ejemplo de period\_no![Diagrama que muestra cómo la función lunarweekend convierte la fecha de entrada de cada transacción en una marca de tiempo del último milisegundo de la semana lunar en que se produce esa fecha.](https://help.qlik.com/es-ES/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekend-examples-period-no.png)

La transacción 8189 tuvo lugar el 19 de enero. La función `lunarweekend()` identifica que la semana lunar comienza el 15 de enero. Por lo tanto, la semana lunar anterior comenzó el 8 de enero y finalizó el 14 de enero a las 23:59:59; este es el valor que devuelve para el campo `previous_lunar_week_end`.

## Ejemplo: first\_week\_day

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

#### Script de carga y resultados

Vista general

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

El script de carga contiene el mismo conjunto de datos y escenario que el primer ejemplo. En este ejemplo, establecemos que las semanas lunares comiencen el 5 de enero.

Script de carga

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

Transactions:
    Load
        *,
        lunarweekend(date,0,4) as end_of_week,
timestamp(lunarweekend(date,0,4)) as end_of_week_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:

* `date`

* `end_of_week`

* `end_of_week_timestamp`

Tabla de resultados

| date | end\_of\_week | end\_of\_week\_timestamp |
| --- | --- | --- |
| 1/7/2022 | 01/11/2022 | 1/11/2022 11:59:59 PM |
| 1/19/2022 | 01/25/2022 | 1/25/2022 11:59:59 PM |
| 2/5/2022 | 02/08/2022 | 2/8/2022 11:59:59 PM |
| 2/28/2022 | 03/01/2022 | 3/1/2022 11:59:59 PM |
| 3/16/2022 | 03/22/2022 | 22/3/2022 23:59:59 |
| 4/1/2022 | 04/05/2022 | 4/5/2022 11:59:59 PM |
| 5/7/2022 | 05/10/2022 | 5/10/2022 11:59:59 PM |
| 5/16/2022 | 05/17/2022 | 17/5/2022 23:59:59 |
| 6/15/2022 | 06/21/2022 | 21/6/2022 23:59:59 |
| 6/26/2022 | 06/28/2022 | 28/6/2022 23:59:59 |
| 7/9/2022 | 07/12/2022 | 7/12/2022 11:59:59 PM |
| 7/22/2022 | 07/26/2022 | 26/7/2022 23:59:59 |
| 7/23/2022 | 07/26/2022 | 26/7/2022 23:59:59 |
| 7/27/2022 | 08/02/2022 | 8/2/2022 11:59:59 PM |
| 8/2/2022 | 08/02/2022 | 8/2/2022 11:59:59 PM |
| 8/8/2022 | 08/09/2022 | 8/9/2022 11:59:59 PM |
| 8/19/2022 | 08/23/2022 | 23/8/2022 23:59:59 |
| 9/26/2022 | 09/27/2022 | 27/9/2022 23:59:59 |
| 10/14/2022 | 10/18/2022 | 18/10/2022 23:59:59 |
| 10/29/2022 | 11/01/2022 | 11/1/2022 11:59:59 PM |

En este caso, como el argumento `first_week_date` de 4 se usa en la función `lunarweekend()`, desplaza el inicio del año del 1 de enero al 5 de enero.

Diagrama de la función `lunarweekend()`, ejemplo de first\_week\_day

Diagrama de la función `lunarweekend()`, ejemplo de first\_week\_day

Diagrama de la función `lunarweekend()`lunarweekend(), ejemplo de first\_week\_day![Diagrama que muestra cómo la función lunarweekend convierte la fecha de entrada de cada transacción en una marca de tiempo del último milisegundo de la semana lunar en que se produce esa fecha.](https://help.qlik.com/es-ES/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekend-examples-first-week-day.png)

La transacción 8189 tuvo lugar el 19 de enero. Debido a que las semanas lunares comienzan el 5 de enero, la función `lunarweekend()` identifica que la semana lunar que contiene el 19 de enero también comienza el 19 de enero. Por lo tanto, el final de esa semana lunar se produce el 25 de enero a las 23:59:59; este es el valor que devuelve para el campo `end_of_week`.

## Ejemplo 4: ejemplo de objeto gráfico

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

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

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 el mismo conjunto de datos y escenario que el primer ejemplo.

Sin embargo, en este ejemplo, el conjunto de datos sin modificar se carga en la aplicación. El cálculo, que devuelve una marca de tiempo con el final de la semana lunar en que se realizaron las transacciones, se crea como una medida en un objeto gráfico de la aplicación.

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 este campo como dimensión:date.

Agregue las siguientes medidas:

=lunarweekend(date)

=timestamp(lunarweekend(date))

Tabla de resultados

| date | =lunarweekend(date) | =timestamp(lunarweekend(date)) |
| --- | --- | --- |
| 1/7/2022 | 01/07/2022 | 1/7/2022 11:59:59 PM |
| 1/19/2022 | 01/21/2022 | 1/21/2022 11:59:59 PM |
| 2/5/2022 | 02/11/2022 | 2/11/2022 11:59:59 PM |
| 2/28/2022 | 03/04/2022 | 3/4/2022 23:59:59 |
| 3/16/2022 | 03/18/2022 | 18/3/2022 23:59:59 |
| 4/1/2022 | 04/01/2022 | 4/1/2022 11:59:59 PM |
| 5/7/2022 | 05/13/2022 | 13/5/2022 23:59:59 |
| 5/16/2022 | 05/20/2022 | 20/5/2022 23:59:59 |
| 6/15/2022 | 06/17/2022 | 17/6/2022 23:59:59 |
| 6/26/2022 | 07/01/2022 | 7/1/2022 11:59:59 PM |
| 7/9/2022 | 07/15/2022 | 15/7/2022 23:59:59 |
| 7/22/2022 | 07/22/2022 | 22/7/2022 23:59:59 |
| 7/23/2022 | 07/29/2022 | 29/7/2022 23:59:59 |
| 7/27/2022 | 07/29/2022 | 29/7/2022 23:59:59 |
| 8/2/2022 | 08/05/2022 | 8/5/2022 11:59:59 PM |
| 8/8/2022 | 08/12/2022 | 8/12/2022 11:59:59 PM |
| 8/19/2022 | 08/19/2022 | 19/8/2022 23:59:59 |
| 9/26/2022 | 09/30/2022 | 30/9/2022 23:59:59 |
| 10/14/2022 | 10/14/2022 | 14/10/2022 23:59:59 |
| 10/29/2022 | 11/04/2022 | 11/4/2022 11:59:59 PM |

La medida end\_of\_week se crea en el objeto gráfico utilizando la función lunarweekend() e introduciendo el campo date como argumento de la función.

La función lunarweekend() identifica en qué semana lunar cae el valor de la fecha y devuelve una marca de tiempo del último milisegundo de esa semana.

Diagrama de la función lunarweekend(), ejemplo de objeto gráfico

Diagrama de la función lunarweekend(), ejemplo de objeto gráfico

Diagrama de la función lunarweekend()lunarweekend(), ejemplo de objeto gráfico![Diagrama que muestra cómo la función lunarweekend convierte la fecha de entrada de cada transacción en una marca de tiempo del último milisegundo de la semana lunar en que se produce esa fecha.](https://help.qlik.com/es-ES/sense/November2025/Subsystems/Hub/Content/Resources/Images/scripting-functions-lunarweekend-examples-chart-object.png)

La transacción 8189 tuvo lugar el 19 de enero. La función lunarweekend() identifica que la semana lunar comienza el 15 de enero. Por lo tanto, el valor end\_of\_week de esa transacción devuelve el último milisegundo de la semana lunar, que es el 21 de enero a las 23:59:59.

## Ejemplo 5: Escenario

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

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

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 Employee\_Expenses.

* Las ID de los empleados, los nombres de empleado y las reclamaciones o declaraciones de gastos diarios promedio de cada empleado.

Al usuario final le gustaría tener un objeto gráfico que muestre, por ID de empleado y nombre de empleado, las reclamaciones de gastos estimados que faltan por presentar durante el resto de la semana lunar.

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

Haga lo siguiente:

1. Cargue los datos y abra una hoja. Cree una nueva tabla.

2. Agregue los siguientes campos como dimensiones.

   * employee\_id

   * employee\_name

3. A continuación, cree la siguiente medida para calcular el interés acumulado:

   =(lunarweekend(today(1))-today(1))\*avg\_daily\_claim

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

Tabla de resultados

| employee\_id | employee\_name | =(lunarweekend(today(1))-today(1))\*avg\_daily\_claim |
| --- | --- | --- |
| 182 | Mark | $75.00 |
| 183 | Deryck | $62.50 |
| 184 | Dexter | $62.50 |
| 185 | Sydney | $135.00 |
| 186 | Agatha | $90.00 |

Al utilizar la fecha de hoy como único argumento, la función lunarkweekend() devuelve la fecha de finalización de la semana lunar actual. Luego, al restar la fecha de hoy de la fecha de finalización de la semana lunar, la expresión devuelve el número de días que quedan de esta semana.

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