# daystart - skript- och diagramfunktion

Denna funktion returnerar ett värde som motsvarar en tidsmarkör med den första millisekunden av den dag som ingår i argumentet time. Det förvalda utdataformatet blir det TimestampFormat som har definierats i skriptet.

Syntax:

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

Returnerad datatyp: dual

Argument

| Argument | Beskrivning |
| --- | --- |
| time | Tidsmarkören som ska evalueras. |
| period\_no | period\_no är ett heltal, eller ett uttryck som resulterar i ett heltal, där värdet 0 anger den dag som innehåller time. Negativa värden i period\_no anger föregående dagar och positiva värden anger efterföljande dagar. |
| day\_start | Om du vill ange att dagar inte startar vid midnatt anger du en startpunkt som delar av en dag i day\_start. Till exempel betecknar 0,125 03.00.<br><br>Med andra ord, för att skapa förskjutningen ska du dividera starttiden med 24 timmar. Till exempel, för en dag som börjar klockan 7.00, använd bråket 7/24. |

## Användning

`daystart()`-funktionen används vanligtvis som en del av ett uttryck när användaren vill att beräkningen ska använda den del av dagen som har förflutit hittills. Det kan exempelvis användas för att beräkna de totala lönerna som de anställda har tjänat hittills under dagen.

I de här exemplen används tidsmarkörsformatet `'M/D/YYYY h:mm:ss[.fff] TT'`. Tidsmarkörsformatet anges i `SET TimeStamp`-satsen längst upp i dataladdningsskriptet. Ändra formatet i exemplen så att det passar dina krav.

Exempel på funktioner

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

## Lokala inställningar

Om inget annat anges använder exemplen i detta ämne följande datumformat: MM/DD/ÅÅÅÅ. Datumformatet anges i `SET DateFormat`-satsen i datainläsningsskriptet. Förvald datumformatering kan vara annorlunda i ditt system, på grund av dina regionala inställningar och andra faktorer. Du kan ändra formaten i exemplen nedan så att det passar dina krav. Eller så kan du ändra formaten i ditt laddningsskript så att de matchar dessa exempel.

Standardregionalinställningar i appar baseras på de regionala systeminställningarna för datorn eller servern där Qlik Sense är installerad. Om Qlik Sense-servern du ansluter till är inställd på Sverige så kommer skriptredigeraren använda regionala inställningar för Sverige för datum, tid och valuta. Dessa regionala formatinställningar är inte relaterade till språket som visas i Qlik Sense användargränssnittet. Qlik Sense kommer att visas på samma språk som webbläsaren du använder.

## Exempel 1 – enkelt exempel

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

#### Laddningsskript och resultat

Översikt

Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.

Laddningsskriptet innehåller:

* En enkel datauppsättning med en lista med datum som laddas till en tabell med namnet `Calendar`.

* `TimeStampFormat`-standardsystemvariabeln (`(M/D/YYYY h:mm:ss[.fff] TT`) används.

* En föregående laddning som skapar ett ytterligare fält benämnt `SOD_timestamp`, med användning av `daystart()`-funktionen.

Utöver datumet ges funktionen inga fler parametrar.

Laddningsskript

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

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `date`

* `SOD_timestamp`

Resultattabell

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

Som framgår av tabellen ovan genereras tidsmarkören för dagens slut för varje datum i vår datauppsättning. Tidsmarkören har formatet för systemvariabeln `TimestampFormat M/D/YYYY h:mm:ss[.fff] TT`.

## Exempel 2 – period\_no

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

#### Laddningsskript och resultat

Översikt

Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.

Laddningsskriptet innehåller:

* En datauppsättning med en lista med parkeringsböter som laddas till en tabell med namnet `Fines`. Datauppsättningen innehåller följande fält:

  * `id`

  * `due_date`

  * `number_plate`

  * `amount`

* En föregående laddning som använder `daystart()`-funktionen och som tillhandahåller alla tre parametrarna: `time`, `period_no` och `day_start`. Den föregående laddningen skapar de två följande nya datumfälten:

  * Ett `early_repayment_period`-datumfält som börjar sju dagar innan inbetalningen ska göras.

  * Ett `late_penalty_period`-datumfält som börjar 14 dagar efter inbetalningen ska göras.

Laddningsskript

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

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `due_date`

* `early_repayment_period`

* `late_penalty_period`

Resultattabell

| due\_date | early\_repayment\_period | late\_penalty\_period |
| --- | --- | --- |
| 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 |

Värdena på de nya fältena finns i `TimestampFormat M/DD/YYYY tt`. Eftersom `daystart()`-funktionen användes är tidsmarkörerna den första millisekunden av dagen.

Värdena för förtidsåterbetalningsperioden är sju dagar före datumet då inbetalningen ska göras, eftersom det andra argumentet som skickats i `  daystart() `-funktionen är negativt.

Värdena för den försenade återbetalningsperioden är 14 dagar efter datumet då inbetalningen ska göras, eftersom det andra argumentet som skickats i `daystart()`-funktionen är negativt.

## Exempel 3 – day\_start

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

#### Laddningsskript och resultat

Översikt

Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.

Laddningsskriptet innehåller:

* Samma datauppsättning och scenario som i föregående exempel.

* Samma föregående laddning som i föregående exempel.

I det här exemplet ställer vi in arbetsdagen till att börja och sluta 7.00 varje dag.

Laddningsskript

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

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `due_date`

* `early_repayment_period`

* `late_penalty_period`

Resultattabell

| due\_date | early\_repayment\_period | 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 |

Datumen har nu tidsmarkören 7.00 eftersom värdet på `day_start`-argumentet som skickades till funktionen `daystart()` var 7/24. Detta ställer in början av dagen till 7.00.

Eftersom `due_date`-fältet inte har en tidsstämpel behandlas det som 0.00 som därför fortfarande räknas till den föregående dagen, eftersom dagarna börjar och slutar 7.00. Förtidsåterbetalningsperioden för en bot som förfaller 11 februari börjar därför 3 februari 7.00.

## Exempel 4 – Diagramobjektexempel

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

#### Laddningsskript och diagramuttryck

Översikt

Öppna skriptredigeraren och lägg till laddningsskriptet nedan i en ny flik.

I det här exemplet används samma datauppsättning och scenario som i föregående exempel.

Men det är bara den ursprungliga Fines-tabellen som laddas i programmet, med de två ytterligare förfallodatumen som beräknas i ett diagramobjekt.

Laddningsskript

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

Resultat

Gör följande:

1. Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension: due\_date.

2. För att skapa fältet early\_repayment\_period skapar du följande mått:

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

3. För att skapa fältet late\_penalty\_period skapar du följande mått:

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

Resultattabell

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

Värdena på de nya fältena finns i TimestampFormat M/D/YYYY h:mm:ss[.fff] TT. Eftersom daystart()-funktionen användes motsvarar tidsmarkörerna den första millisekunden av dagen.

Värdena för förtidsåterbetalningsperioden är sju dagar före datumet då inbetalningen ska göras, eftersom det andra argumentet som skickades i daystart()-funktionen var negativt.

Värdena för den försenade återbetalningsperioden är 14 dagar efter datumet då inbetalningen ska göras, eftersom det andra argumentet som skickades i daystart()-funktionen var positivt.

Datumen har en tidsmarkör på 7.00 eftersom värdet på det tredje argumentet som skickades till daystart()-funktionen, day\_start var 7/24.