# daystart funkcja skryptu i funkcja wykresu

Ta funkcja zwraca wartość odpowiadającą znacznikowi czasu dla pierwszej milisekundy dnia zawartego w argumencie time. Domyślnym formatem wyjściowym będzie format TimestampFormat skonfigurowany w skrypcie.

Składnia:

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

Typ zwracanych danych: wartość podwójna

Argumenty

| Argument | Opis |
| --- | --- |
| time | Znacznik czasu do oceny. |
| period\_no | Parametr period\_no jest liczbą całkowitą lub wyrażeniem, którego wynikiem jest liczba całkowita, gdzie wartość 0 wskazuje dzień zawierający wartość time. Wartości ujemne parametru period\_no oznaczają dni poprzednie, a wartości dodatnie — dni następne. |
| day\_start | Aby określić, że dni nie zaczynają się o północy, należy wskazać przesunięcie w postaci części dnia w parametrze day\_start. Na przykład 0,125 oznacza godzinę trzecią rano.<br><br>Innymi słowy, aby utworzyć przesunięcie, podziel godzinę rozpoczęcia przez 24 godziny. Na przykład, jeśli dzień ma się zaczynać o godzinie 7:00, użyj ułamka 7/24. |

## Kiedy używać daystart

Funkcja `daystart()` jest zwykle używana jako część wyrażenia, gdy użytkownik chce, by w obliczeniach użyto ułamka dnia, który upłynął do tej pory. Za jej pomocą można na przykład obliczyć łączną kwotę zarobioną przez pracowników do tej pory w ciągu dnia.

W tych przykładach jest używany format znacznika czasu `'M/D/YYYY h:mm:ss[.fff] TT'`. Format znacznika czasu jest określony w instrukcji `SET TimeStamp` u góry skryptu ładowania danych. Format zastosowany w przykładach można zmienić, aby dostosować go do konkretnych potrzeb.

Przykłady funkcji

| Przykład | Wynik |
| --- | --- |
| `daystart('01/25/2013 4:45:00 PM')` | Zwraca wartość 1/25/2013 12:00:00 AM. |
| `daystart('1/25/2013 4:45:00 PM', -1)` | Zwraca wartość 1/24/2013 12:00:00 AM. |
| `daystart('1/25/2013 16:45:00',0,0.5<br>)` | Zwraca wartość 1/25/2013 12:00:00 PM. |

## Ustawienia regionalne

Jeżeli nie podano inaczej, w przykładach w tym temacie stosowany jest następujący format daty: MM/DD/YYYY. Format daty jest określony w instrukcji `SET DateFormat` w skrypcie ładowania danych. Domyślny format daty w Twoim systemie może być inny ze względu na ustawienia regionalne i inne czynniki. Formaty zastosowane w przykładach można zmienić, aby dostosować je do własnych wymagań. Zamiast tego można też zmienić formaty w skrypcie ładowania, aby pasowały do tych przykładów. Więcej informacji można znaleźć w temacie [Modyfikowanie ustawień regionalnych na potrzeby aplikacji i skryptów](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm).

Domyślne ustawienia regionalne w aplikacjach są oparte na profilu użytkownika. Te ustawienia regionalne nie są związane z językiem wyświetlanym w interfejsie użytkownika Qlik Cloud. Interfejs Qlik Cloud będzie wyświetlany w tym samym języku co używana przeglądarka.

Jeżeli jesteś twórcą aplikacji, możesz wybrać domyślny region dla tworzonych przez siebie aplikacji. Więcej informacji zawiera temat [Ustawianie preferowanych ustawień regionalnych do tworzenia aplikacji i skryptów w Analityka Qlik Cloud](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting).

## Przykład 1 – prosty przykład

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

#### Skrypt ładowania i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Prosty zestaw danych zawierający listę dat, który jest załadowany do tabeli o nazwie `Calendar`.

* Została użyta domyślna zmienna systemowa `TimeStampFormat` `(M/D/YYYY h:mm:ss[.fff] TT`.

* Ładowanie poprzedzające, które tworzy dodatkowe pole, o nazwie `SOD_timestamp`, używające funkcji `daystart()`.

Oprócz daty do funkcji nie przekazano żadnych innych parametrów.

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `date`

* `SOD_timestamp`

Tabela wynikowa

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

Jak widać w powyższej tabeli, dla każdej daty w naszym zbiorze danych został wygenerowany znacznik czasu końca dnia. Znacznik ten ma format zmiennej systemowej `TimestampFormat M/D/YYYY h:mm:ss[.fff] TT`.

## Przykład 2 – period\_no

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

#### Skrypt ładowania i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Zbiór danych zawierający mandaty za parkowanie, który jest załadowany do tabeli o nazwie `Fines`. Zbiór ten zawiera następujące pola:

  * `id`

  * `due_date`

  * `number_plate`

  * `amount`

* Ładowanie poprzedzające, w którym użyto funkcji `daystart()` i przekazano wszystkie trzy parametry: `time`, `period_no` i `day_start`. To ładowanie poprzedzające tworzy następujące dwa nowe pola daty:

  * Pole daty `early_repayment_period`, zaczynające się siedem dni przed terminem płatności.

  * Pole daty `late_penalty_period`, zaczynające się czternaście dni po terminie płatności.

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `due_date`

* `early_repayment_period`

* `late_penalty_period`

Tabela wynikowa

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

Wartości nowych pól znajdują się w `TimestampFormat M/DD/YYYY tt`. Jako że użyto funkcji `daystart()`, wszystkie wartości znacznika czasu oznaczają pierwszą milisekundę dnia.

Wartości przedwczesnego terminu spłaty określają datę o siedem dni wcześniejszą od terminu spłaty, ponieważ drugi argument przekazany do funkcji `  daystart() ` jest ujemny.

Wartości spóźnionego terminu spłaty określają datę o czternaście dni późniejszą od terminu spłaty, ponieważ drugi argument przekazany do funkcji `daystart()` jest dodatni.

## Przykład 3 – day\_start

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

#### Skrypt ładowania i wyniki

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej sekcji.

Skrypt ładowania zawiera:

* Ten sam zestaw danych i zastosowanie co w poprzednim przykładzie.

* To samo ładowanie poprzedzające co w poprzednim przykładzie.

W tym przykładzie ustawiliśmy początek i koniec dnia roboczego na godzinę 7:00 każdego dnia.

Skrypt ładowania

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

Wyniki

Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj te pola jako wymiary:

* `due_date`

* `early_repayment_period`

* `late_penalty_period`

Tabela wynikowa

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

Teraz daty mają znacznik czasu godziny 7:00, ponieważ argument `day_start`, przekazany do funkcji `daystart()`, ma wartość 7/24. To ustawia początek dnia na godzinę 7:00.

Ponieważ pole `due_date` nie ma znacznika czasu, jest traktowane jako godzina 12:00, która wciąż należy do poprzedniego dnia, ponieważ dni zaczynają i kończą się o godzinie 7:00. W związku z tym okres przedwczesnej spłaty mandatu o terminie płatności 11 lutego zaczyna się 3 lutego o godzinie 7:00.

## Przykład 4 — przykład z obiektem wykresu

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

#### Skrypt ładowania i wyrażenie wykresu

Przegląd

Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.

W tym przykładzie użyto tego samego zestawu danych i zastosowania co w poprzednim przykładzie.

Jednak do aplikacji załadowano tylko oryginalną tabelę Fines, a dwa dodatkowe terminy należności są obliczane w obiekcie wykresu.

Skrypt ładowania

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

Wyniki

Wykonaj następujące czynności:

1. Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar: due\_date.

2. Aby utworzyć pole early\_repayment\_period, należy utworzyć następującą miarę:

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

3. Aby utworzyć pole late\_penalty\_period, należy utworzyć następującą miarę:

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

Tabela wynikowa

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

Wartości nowych pól znajdują się w TimestampFormat M/D/YYYY h:mm:ss[.fff] TT. Ponieważ użyto funkcji daystart(), wszystkie wartości znacznika czasu odpowiadają pierwszej milisekundzie dnia.

Wartości przedwczesnego terminu spłaty określają datę o siedem dni wcześniejszą od terminu spłaty, ponieważ drugi argument przekazany do funkcji daystart() był ujemny.

Wartości spóźnionego terminu spłaty określają datę o czternaście dni późniejszą od terminu spłaty, ponieważ drugi argument przekazany do funkcji daystart() był dodatni.

Daty mają znacznik czasu godziny 7:00, ponieważ trzeci argument (day\_start) przekazany do funkcji daystart() ma wartość 7/24.