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

Esta función devuelve un valor correspondiente a una marca de tiempo (fecha-hora) con el primer milisegundo del día contenido en el argumento time. El formato de salida predeterminado será el TimestampFormat establecido en el script.

Sintaxis:

DayStart(time[, [period\_no[, day\_start]])

Tipo de datos que devuelve: dual

Argumentos

| Argumento | Descripción |
| --- | --- |
| time | La fecha/hora que se ha de evaluar. |
| period\_no | period\_no es un entero, o una expresión que devuelve un entero, donde el valor 0 indica el día que contiene a time. Los valores negativos en period\_no indican días precedentes y los valores positivos indican días subsiguientes. |
| day\_start | Para especificar que los días no comienzan a la medianoche, indique un desplazamiento como una fracción de un día en day\_start. Por ejemplo, 0,125 para indicar las 3.00 am.<br><br>En otras palabras, para crear el desplazamiento, divida la hora de inicio por 24 horas. Por ejemplo, para que un día comience a las 7:00 am, utilice la fracción 7/24. |

## Cuándo se utiliza

La función `daystart()` 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 ya ha transcurrido. Por ejemplo, se podría usar para calcular los salarios totales obtenidos por los empleados en el día hasta el momento.

Estos ejemplos utilizan el formato de fecha y hora `'M/D/YYYY h:mm:ss[.fff] TT'`. El formato de fecha y hora se especifica en la sentencia `SET TimeStamp` en la parte superior de su script de carga de datos. Cambie el formato en los ejemplos según se ajuste a sus necesidades.

Ejemplos de funciones

| Ejemplo | Resultado |
| --- | --- |
| `daystart('01/25/2013 4:45:00 PM')` | Devuelve 1/25/2013 12:00:00 AM. |
| `daystart('1/25/2013 4:45:00 PM', -1)` | Devuelve 1/24/2013 12:00:00 AM. |
| `daystart('1/25/2013 16:45:00',0,0.5<br>)` | Devuelve 1/25/2013 12:00:00 PM. |

## 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: ejemplo sencillo

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/daystart.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 simple que contiene una lista de fechas, que se carga en una tabla denominada `Calendar`.

* Se utiliza la variable predefinida del sistema `TimeStampFormat` (`(M/D/YYYY h:mm:ss[.fff] TT`).

* Una instrucción load precedente que crea un campo adicional, llamado `SOD_timestamp`, mediante la función `daystart()`.

Aparte de la fecha, no se proporcionan parámetros adicionales a la función.

Script de carga

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';

Calendar:
    Load
        date,
        daystart(date) as SOD_timestamp
        ;
Load
date
Inline 
[
date
03/11/2022 1:47:15 AM
03/12/2022 4:34:58 AM
03/13/2022 5:15:55 AM
03/14/2022 9:25:14 AM
03/15/2022 10:06:54 AM
03/16/2022 10:44:42 AM
03/17/2022 11:33:30 AM
03/18/2022 12:58:14 PM
03/19/2022 4:23:12 PM
03/20/2022 6:42:15 PM
03/21/2022 7:41:16 PM
];
					
```

Resultados

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

* `date`

* `SOD_timestamp`

Tabla de resultados

| date | SOD\_timestamp |
| --- | --- |
| 03/11/2022 1:47:15 AM | 3/11/2022 12:00:00 AM |
| 03/12/2022 4:34:58 AM | 3/12/2022 12:00:00 AM |
| 03/13/2022 5:15:55 AM | 3/13/2022 12:00:00 AM |
| 03/14/2022 9:25:14 AM | 3/14/2022 12:00:00 AM |
| 03/15/2022 10:06:54 AM | 3/15/2022 12:00:00 AM |
| 03/16/2022 10:44:42 AM | 3/16/2022 12:00:00 AM |
| 03/17/2022 11:33:30 AM | 3/17/2022 12:00:00 AM |
| 03/18/2022 12:58:14 PM | 3/18/2022 12:00:00 AM |
| 03/19/2022 4:23:12 PM | 3/19/2022 12:00:00 AM |
| 03/20/2022 6:42:15 PM | 3/20/2022 12:00:00 AM |
| 03/21/2022 7:41:16 PM | 3/21/2022 12:00:00 AM |

Como puede ver en la tabla anterior, la marca de tiempo (fecha-hora) del final del día se genera para cada fecha de nuestro conjunto de datos. La marca de tiempo está en el formato de la variable del sistema `TimestampFormat M/D/YYYY h:mm:ss[.fff] TT`.

## Ejemplo 2: period\_no

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/daystart.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 multas de aparcamiento, se carga en una tabla llamada `Fines` (Multas). El conjunto de datos incluye los siguientes campos:

  * `id`

  * `due_date`

  * `number_plate`

  * `amount`

* Un load precedente usando la función `daystart()` y suministrando los tres parámetros: `time`, `period_no` y `day_start`. Este load precedente crea los siguientes dos nuevos campos de fecha:

  * Un campo de fecha `early_repayment_period`, que comienza siete días antes de la fecha de vencimiento del pago.

  * Un campo de fecha `late_penalty_period`, que comienza 14 días después de la fecha de vencimiento del pago.

Script de carga

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';

Fines:
    Load
        *,
        daystart(due_date,-7) as early_repayment_period,
        daystart(due_date,14) as late_penalty_period
        ;
Load
*
Inline
[
id, due_date, number_plate,amount
1,02/11/2022, 573RJG,50.00
2,03/25/2022, SC41854,50.00
3,04/14/2022, 8EHZ378,50.00
4,06/28/2022, 8HSS198,50.00
5,08/15/2022, 1221665,50.00
6,11/16/2022, EAK473,50.00
7,01/17/2023, KD6822,50.00
8,03/22/2023, 1GGLB,50.00
];
```

Resultados

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

* `due_date`

* `early_repayment_period`

* `late_penalty_period`

Tabla de resultados

| fecha\_de\_vencimiento | periodo\_de\_pago\_anticipado | período\_de\_penalización\_tardía |
| --- | --- | --- |
| 02/11/2022 9:25:14 AM | 2/4/2022 12:00:00 AM | 2/25/2022 12:00:00 AM |
| 03/25/2022 10:06:54 AM | 3/18/2022 12:00:00 AM | 4/8/2022 12:00:00 AM |
| 04/14/2022 10:44:42 AM | 4/7/2022 12:00:00 AM | 4/28/2022 12:00:00 AM |
| 06/28/2022 11:33:30 AM | 6/21/2022 12:00:00 AM | 7/12/2022 12:00:00 AM |
| 08/15/2022 12:58:14 PM | 8/8/2022 12:00:00 AM | 8/29/2022 12:00:00 AM |
| 11/16/2022 4:23:12 PM | 11/9/2022 12:00:00 AM | 11/30/2022 12:00:00 AM |
| 01/17/2023 6:42:15 PM | 1/10/2023 12:00:00 AM | 1/31/2023 12:00:00 AM |
| 03/22/2023 7:41:16 PM | 3/15/2023 12:00:00 AM | 4/5/2023 12:00:00 AM |

Los valores de los nuevos campos están en `TimestampFormat M/DD/YYYY tt`. Como se utilizó la función `daystart()`, los valores de la marca de tiempo corresponden todos al primer milisegundo del día.

Los valores del período de amortización anticipada son siete días antes de la fecha de vencimiento, dado que el segundo argumento proporcionado en la función `  daystart() ` es negativo.

Los valores del período de pago atrasado son 14 días posteriores a la fecha de vencimiento, dado que el segundo argumento proporcionado en la función `daystart()` es positivo.

## Ejemplo 3: day\_start

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

* El mismo load precedente que en el ejemplo anterior.

En este ejemplo, configuramos la jornada laboral para que comience y finalice a las 7:00 a. m. todos los días.

Script de carga

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

Fines:
    Load
        *,
        daystart(due_date,-7,7/24) as early_repayment_period,	 
        daystart(due_date,14, 7/24) as late_penalty_period
        ;
Load
*
Inline
[
id, due_date, number_plate,amount
1,02/11/2022, 573RJG,50.00
2,03/25/2022, SC41854,50.00
3,04/14/2022, 8EHZ378,50.00
4,06/28/2022, 8HSS198,50.00
5,08/15/2022, 1221665,50.00
6,11/16/2022, EAK473,50.00
7,01/17/2023, KD6822,50.00
8,03/22/2023, 1GGLB,50.00
];
```

Resultados

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

* `due_date`

* `early_repayment_period`

* `late_penalty_period`

Tabla de resultados

| fecha\_de\_vencimiento | periodo\_de\_pago\_anticipado | late\_penalty\_period |
| --- | --- | --- |
| 02/11/2022 | 2/3/2022 7:00:00 AM | 2/24/2022 7:00:00 AM |
| 03/25/2022 | 3/17/2022 7:00:00 AM | 4/7/2022 7:00:00 AM |
| 04/14/2022 | 4/6/2022 7:00:00 AM | 4/27/2022 7:00:00 AM |
| 06/28/2022 | 6/20/2022 7:00:00 AM | 7/11/2022 7:00:00 AM |
| 08/15/2022 | 8/7/2022 7:00:00 AM | 8/28/2022 7:00:00 AM |
| 11/16/2022 | 11/8/2022 7:00:00 AM | 11/29/2022 7:00:00 AM |
| 01/17/2023 | 1/9/2023 7:00:00 AM | 1/30/2023 7:00:00 AM |
| 03/22/2023 | 3/14/2023 7:00:00 AM | 4/4/2023 7:00:00 AM |

Las fechas ahora tienen las 7:00 a.m. como hora porque el valor del argumento `day_start` indicado en la función `daystart()` era 7/24. Esto establece el comienzo del día a las 7:00 a. m.

Debido a que el campo `due_date` no tiene una marca de tiempo, se trata como las 12:00 a. m., que por lo tanto sigue siendo parte del día anterior, ya que los días comienzan y terminan a las 7:00 a. m. Por tanto, el plazo de amortización anticipada de una multa con vencimiento el 11 de febrero comienza el 3 de febrero a las 7:00 horas.

## Ejemplo 4: ejemplo de objeto gráfico

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/daystart.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 en una nueva pestaña.

Este ejemplo utiliza el mismo conjunto de datos y escenario que el ejemplo anterior.

Sin embargo, solo la tabla Fines original se carga en la aplicación, y los dos valores de fechas de vencimiento adicionales se calculan en un objeto gráfico.

Script de carga

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT';

Fines:
    Load
*
Inline 
[
id, due_date, numer_plate,amount
1,02/11/2022 9:25:14 AM, 573RJG,50.00
2,03/25/2022 10:06:54 AM, SC41854,50.00
3,04/14/2022 10:44:42 AM, 8EHZ378,50.00
4,06/28/2022 11:33:30 AM, 8HSS198,50.00
5,08/15/2022 12:58:14 PM, 1221665,50.00
6,11/16/2022 4:23:12 PM, EAK473,50.00
7,01/17/2023 6:42:15 PM, KD6822,50.00
8,03/22/2023 7:41:16 PM, 1GGLB,50.00
];
```

Resultados

Haga lo siguiente:

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

2. Para crear el campo early\_repayment\_period, cree la siguiente medida.

   =daystart(due\_date,-7,7/24)

3. Para crear el campo late\_penalty\_period, cree la siguiente medida:

   =daystart(due\_date,14,7/24)

Tabla de resultados

| due\_date | =daystart(due\_date,-7,7/24) | =daystart(due\_date,14,7/24) |
| --- | --- | --- |
| 02/11/2022 9:25:14 AM | 2/4/2022 7:00:00 AM | 2/25/2022 7:00:00 AM |
| 03/25/2022 10:06:54 AM | 3/18/2022 7:00:00 AM | 4/8/2022 7:00:00 AM |
| 04/14/2022 10:44:42 AM | 4/7/2022 7:00:00 AM | 4/28/2022 7:00:00 AM |
| 06/28/2022 11:33:30 AM | 6/21/2022 7:00:00 AM | 7/12/2022 7:00:00 AM |
| 08/15/2022 12:58:14 PM | 8/8/2022 7:00:00 AM | 8/29/2022 7:00:00 AM |
| 11/16/2022 4:23:12 PM | 11/9/2022 7:00:00 AM | 11/30/2022 7:00:00 AM |
| 01/17/2023 6:42:15 PM | 1/10/2023 7:00:00 AM | 1/31/2023 7:00:00 AM |
| 03/22/2023 7:41:16 PM | 3/15/2023 7:00:00 AM | 4/5/2023 7:00:00 AM |

Los valores de los nuevos campos están en TimestampFormat M/D/YYYY h:mm:ss[.fff] TT. Como se utilizó la función daystart(), los valores de la marca de tiempo corresponden al primer milisegundo del día.

Los valores del período de amortización anticipada son siete días antes de la fecha de vencimiento, dado que el segundo argumento proporcionado en la función daystart() era negativo.

Los valores del período de pago atrasado son 14 días posteriores a la fecha de vencimiento, dado que el segundo argumento proporcionado en la función daystart() era positivo.

Las fechas marcan las 7:00 a. m. porque el valor del tercer argumento indicado en la función daystart(), day\_start, era 7/24.