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

Esta función devuelve una fecha calculada a partir del año, el número de semana y el día de la semana.

Sintaxis:

MakeWeekDate(weekyear [, week [, weekday [, first\_week\_day [, broken\_weeks [, reference\_day]]]]])

Tipo de datos que devuelve: dual

La función `makeweekdate()` está disponible tanto como función de script como de gráfico. La función calculará la fecha en función de los parámetros indicados en la función.

Argumentos

| Argumento | Descripción |
| --- | --- |
| weekyear | El año definido por la función `WeekYear()` para la fecha específica, es decir, el año al que pertenece el número de semana.<br><br>Nota informativaEn algunos casos, el año de la semana puede ser diferente del año natural, por ejemplo, si la semana 1 ya comienza en diciembre del año anterior. |
| week | El número de semana definido por la función `Week()` para la fecha específica.<br><br>Si no se indica el número de semana, se presupone 1. |
| weekday | El día de la semana definido por la función `WeekDay()` para la fecha en cuestión. 0 es el primer día de la semana y 6 es el último día de la semana.<br><br>Si no se indica el día de la semana, se presupone 0.<br><br>Nota informativaAunque 0 siempre significa el primer día de la semana y 6 siempre es el último, a qué día de la semana corresponde el parámetro first\_week\_day . Si se omite, se utiliza el valor de la variable FirstWeekDay.<br><br>Si se utilizan semanas interrumpidas, junto con una combinación imposible de parámetros, esto puede llevar a un resultado que no corresponde al año elegido.<br><br>Ejemplo:<br><br>```<br>MakeWeekDate(2021,1,0,6,1)<br>```<br><br>Devuelve "27 de diciembre de 2020" ya que este día es el primer día (el domingo) de la semana especificada. El 1 de enero de 2021 fue viernes. |
| first\_week\_day | Especifica el día en el que se inicia la semana. Si se omite, se utiliza el valor de la variable FirstWeekDay.<br><br>Los valores posibles de first\_week\_day son 0 para el lunes, 1 para el martes, 2 para el miércoles, 3 para el jueves, 4 para el viernes, 5 para el sábado y 6 para el domingo.<br><br>Para más información sobre la variable del sistema, vea [FirstWeekDay](https://help.qlik.com/es-ES/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/FirstWeekDay.htm). |
| broken\_weeks | Si no se especifica broken\_weeks, el valor de la variable BrokenWeeks se usará para definir si las semanas se rompen o no.<br><br>Para más información sobre la variable del sistema, vea [BrokenWeeks](https://help.qlik.com/es-ES/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/BrokenWeeks.htm) |
| reference\_day | Si no especifica reference\_day, el valor de la variable ReferenceDay se utilizará para definir qué día de enero establecer como día de referencia para definir la semana 1.<br><br>Para más información sobre la variable del sistema, vea [ReferenceDay](https://help.qlik.com/es-ES/sense/May2026/Subsystems/Hub/Content/Sense_Hub/Scripting/NumberInterpretationVariables/ReferenceDay.htm) |

## Cuándo se utiliza

La función `makeweekdate()` se utiliza normalmente en el script para generación de datos, para generar una lista de fechas o para crear fechas cuando el año, la semana y el día de la semana se proporcionan en los datos de entrada.

Los siguientes ejemplos suponen:

```
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;
```

Ejemplos de funciones

| Ejemplo | Resultado |
| --- | --- |
| `makeweekdate(2014,6,6)` | devuelve 02/09/2014 |
| `makeweekdate(2014,6,1)` | devuelve 02/04/2014 |
| `makeweekdate(2014,6)` | devuelve 02/03/2014 (se presupone el día 0 de la semana) |

## 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 aplicaciones 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 Qlik Sense interfaz de usuario. Qlik Sense se mostrará en el mismo idioma que el navegador que esté utilizando.

## Ejemplo 1: día incluido

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makeweekdate.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 el total de ventas semanales para 2022 en una tabla llamada `Sales`.

* Fechas de transacción proporcionadas en tres campos: `year`, `week` y `sales`.

* Una instrucción load precedente, que se utiliza para crear una medida `end_of_week`, empleando la función `makeweekdate()` para devolver la fecha del viernes de esa semana en el formato MM/DD/AAAA.

Para probar que la fecha devuelta es un viernes, la expresión `end_of_week` también se incluye en la función `weekday()` para mostrar el día de la semana.

Script de carga

```
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;

Transactions:
    Load
        *,
        makeweekdate(transaction_year, transaction_week,4) as end_of_week,
        weekday(makeweekdate(transaction_year, transaction_week,4)) as week_day
        ; 
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
```

Resultados

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

* `transaction_year`

* `transaction_week`

* `end_of_week`

* `week_day`

Tabla de resultados

| transaction\_year | transaction\_week | end\_of\_week | week\_day |
| --- | --- | --- | --- |
| 2022 | 01 | 01/07/2022 | Vie |
| 2022 | 02 | 01/14/2022 | Vie |
| 2022 | 03 | 01/21/2022 | Vie |
| 2022 | 04 | 01/28/2022 | Vie |
| 2022 | 05 | 02/04/2022 | Vie |
| 2022 | 06 | 02/11/2022 | Vie |
| 2022 | 07 | 02/18/2022 | Vie |

El campo "`end_of_week`" se crea en la instrucción load anterior, mediante el uso de la función `makeweekdate()`. Los campos `transaction_year`, `transaction_week` se indican mediante la función como argumentos de año y semana. Se utiliza un valor de 4 para el argumento del día.

Luego la función combina y convierte estos valores en un campo de fecha, devolviendo los resultados en el formato de la variable del sistema `DateFormat`.

La función `makeweekdate()` y sus argumentos también van dentro de una función `weekday()` para devolver el campo `week_day`; y como se puede ver en la tabla anterior, el campo `week_day` muestra que estas fechas ocurren un viernes.

## Ejemplo 2: día excluido

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makeweekdate.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 los totales de ventas semanales para 2022 en una tabla llamada Sales.

* Fechas de transacción proporcionadas en tres campos: year, week y sales.

* Un load anterior, que se utiliza para crear una medida, first\_day\_of\_week, utilizando la función makeweekdate(). Esto devolverá la fecha del lunes de esa semana en el formato MM/DD/AAAA.

Para probar que la fecha devuelta es un lunes, la expresión first\_day\_of\_week también se incluye en la función weekday() para mostrar el día de la semana.

Script de carga

```
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;

Transactions:
    Load
        *,
        makeweekdate(transaction_year, transaction_week) as first_day_of_week,
        weekday(makeweekdate(transaction_year, transaction_week)) as week_day
        ; 
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
```

Resultados

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

* transaction\_year

* transaction\_week

* first\_day\_of\_week

* week\_day

Tabla de resultados

| transaction\_year | transaction\_week | first\_day\_of\_week | week\_day |
| --- | --- | --- | --- |
| 2022 | 01 | 01/03/2022 | Lun |
| 2022 | 02 | 01/10/2022 | Lun |
| 2022 | 03 | 01/17/2022 | Lun |
| 2022 | 04 | 01/24/2022 | Lun |
| 2022 | 05 | 01/31/2022 | Lun |
| 2022 | 06 | 02/07/2022 | Lun |
| 2022 | 07 | 02/14/2022 | Lun |

El campo first\_day\_of\_week se crea en la instrucción de carga anterior mediante el uso de la función makeweekdate(). Los parámetros transaction\_year y transaction\_week se indican como argumentos de la función y el parámetro del día se deja en blanco.

Luego la función combina y convierte estos valores en un campo de fecha, devolviendo los resultados en el formato de la variable del sistema DateFormat.

La función makeweekdate() y sus argumentos también van incluidos en una función weekday() que devuelve el campo week\_day. Como se puede ver en la tabla anterior, el campo week\_day devuelve el lunes en todos los casos, ya que ese parámetro se dejó en blanco en la función makeweekdate(), que por defecto es 0 (primer día de la semana), y el sistema establece el lunes como primer día de la semana en la variable de sistema FirstWeekDay.

## Ejemplo 3: ejemplo de objeto gráfico

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makeweekdate.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 contiene los totales de ventas semanales para 2022 en una tabla llamada Sales.

* Fechas de transacción proporcionadas en tres campos: year, week y sales.

En este ejemplo, se usará un objeto gráfico para crear una medida equivalente al cálculo de end\_of\_week del primer ejemplo. Esta medida utilizará la función makeweekdate() para devolver la fecha del viernes de esa semana en el formato MM/DD/AAAA.

Para demostrar que la fecha devuelta es un viernes, se crea una segunda medida que devuelve el día de la semana.

Script de carga

```
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;

Master_Calendar:
Load * Inline [
transaction_year, transaction_week, sales
2022, 01, 10000
2022, 02, 11250
2022, 03, 9830
2022, 04, 14010
2022, 05, 28402
2022, 06, 9992
2022, 07, 7292
];
```

Resultados

Haga lo siguiente:

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

   * transaction\_year

   * transaction\_week

2. Para realizar el cálculo equivalente al del campo end\_of\_week del primer ejemplo, cree la siguiente medida:

   =makeweekdate(transaction\_year,transaction\_week,4)

3. Para calcular el día de la semana de cada transacción, cree la siguiente medida:

   =weekday(makeweekdate(transaction\_year,transaction\_week,4))

Tabla de resultados

| transaction\_year | transaction\_week | =makeweekdate(transaction\_year,transaction\_week,4) | =weekday(makeweekdate(transaction\_year,transaction\_week,4)) |
| --- | --- | --- | --- |
| 2022 | 01 | 01/07/2022 | Vie |
| 2022 | 02 | 01/14/2022 | Vie |
| 2022 | 03 | 01/21/2022 | Vie |
| 2022 | 04 | 01/28/2022 | Vie |
| 2022 | 05 | 02/04/2022 | Vie |
| 2022 | 06 | 02/11/2022 | Vie |
| 2022 | 07 | 02/18/2022 | Vie |

Se crea un campo equivalente a end\_of\_week en el objeto gráfico como medida usando la función makeweekdate(). Los campos transaction\_year y transaction\_week se indican como argumentos de año y semana. Se utiliza un valor de 4 para el argumento del día.

Luego la función combina y convierte estos valores en un campo de fecha, devolviendo los resultados en el formato de la variable del sistema DateFormat.

La función makeweekdate() y sus argumentos también van incluidos en una función weekday() que devuelve un cálculo equivalente al del campo week\_day del primer ejemplo. Como se puede ver en la tabla anterior, la última columna de la derecha muestra que estas fechas ocurren en viernes.

## Ejemplo 4: Escenario

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

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

Vista general

En este ejemplo, cree una lista de fechas que contenga todos los viernes del año 2022.

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

Script de carga

```
SET DateFormat='MM/DD/YYYY';
SET FirstWeekDay=0;
SET BrokenWeeks=0;
SET ReferenceDay=4;

Calendar:
    load
	    *,
        weekday(date) as weekday
    where year(date)=2022;
load
    makeweekdate(2022,recno()-2,4) as date
AutoGenerate 60;
```

Resultados

Tabla de resultados

| date | weekday |
| --- | --- |
| 01/07/2022 | Vie |
| 01/14/2022 | Vie |
| 01/21/2022 | Vie |
| 01/28/2022 | Vie |
| 02/04/2022 | Vie |
| 02/11/2022 | Vie |
| 02/18/2022 | Vie |
| 02/25/2022 | Vie |
| 03/04/2022 | Vie |
| 03/11/2022 | Vie |
| 03/18/2022 | Vie |
| 03/25/2022 | Vie |
| 04/01/2022 | Vie |
| 04/08/2022 | Vie |
| 04/15/2022 | Vie |
| 04/22/2022 | Vie |
| 04/29/2022 | Vie |
| 05/06/2022 | Vie |
| 05/13/2022 | Vie |
| 05/20/2022 | Vie |
| 05/27/2022 | Vie |
| 06/03/2022 | Vie |
| 06/10/2022 | Vie |
| 06/17/2022 | Vie |
| + 27 filas más |  |

La función makeweekdate() encuentra cada viernes de 2022. Usar un parámetro de semana de -2 garantiza que no se pierda ninguna fecha. Por último, una instrucción load anterior crea un campo weekday adicional para mayor claridad, para mostrar que cada valor de date es un viernes.