# dayend — funkcja skryptu i funkcja wykresu

Ta funkcja zwraca wartość odpowiadającą znacznikowi czasu dla ostatniej milisekundy dnia określonego przez parametr time. Domyślnym formatem wyjściowym będzie format TimestampFormat skonfigurowany w skrypcie.

Składnia:

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

Kiedy używać

Funkcja `  dayend() ` jest powszechnie używana jako część wyrażenia, gdy użytkownik chce, by w obliczeniach użyto ułamka dnia, który jeszcze nie nastąpił. Na przykład, aby obliczyć całkowite wydatki do poniesienia w ciągu dnia.

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

## Ustawienia regionalne

Jeżeli nie podano inaczej, w przykładach w tym temacie stosowany jest następujący format daty: MM/DD/RRRR. 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.

Domyślne ustawienia regionalne w aplikacjach są oparte na regionalnych ustawieniach systemu komputera lub serwera, na którym zainstalowano Qlik Sense. Jeśli serwer Qlik Sense, do którego uzyskujesz dostęp, jest ustawiony na Szwecję, Edytor ładowania danych użyje szwedzkich ustawień regionalnych dla dat, godziny i waluty. Te ustawienia regionalne nie są związane z językiem wyświetlanym w interfejsie użytkownika Qlik Sense. Interfejs Qlik Sense będzie wyświetlany w tym samym języku co używana przeglądarka.

Przykłady funkcji

| Przykład | Wynik |
| --- | --- |
| dayend('01/25/2013 16:45:00') | Zwraca 01/25/2013 23:59:59. PM |
| dayend('01/25/2013 16:45:00', -1) | Zwraca 01/24/2013 23:59:59. PM |
| dayend('25/01/2013 16:45:00', 0, 0.5) | Zwraca 01/26/2013 11:59:59. PM |

## Przykład 1 – prosty skrypt

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

#### Skrypt ładowania i wyniki

Przegląd

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

Skrypt ładowania zawiera:

* Zestaw danych zawierający listę dat, który jest załadowany do tabeli o nazwie „Calendar”.

* Domyślna `DateFormat` zmienna systemowa `(MM/DD/YYYY)`.

* Ładowanie poprzedzające mające na celu utworzenia dodatkowego pola, „`EOD_timestamp`”, przy użyciu funkcji `dayend()`.

Skrypt ładowania

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

Calendar: 
    Load 
      date, 
      dayend(date) as EOD_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`

* `EOD_timestamp`

Tabela wynikowa

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

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/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/dayend.htm)

#### Skrypt ładowania i wyniki

Przegląd

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

Załadujesz zbiór danych zawierający rezerwacje usług do tabeli o nazwie „Services”.

Zbiór ten zawiera następujące pola:

* `service_id`

* `service_date`

* `amount`

Utworzysz dwa nowe pola w tabeli:

* `deposit_due_date`: data, kiedy powinien zostać odebrany depozyt. Jest to koniec dnia na trzy dni przed `service_date`.

* `final_payment_due_date`: data, kiedy powinna zostać otrzymana ostateczna płatność. Jest to koniec dnia siedem dni po `service_date`.

Dwa powyższe pola zostały utworzone w ładowaniu poprzedzającym przy użyciu funkcji `dayend()` i dostarczają one dwa pierwsze parametry: `time` i `period_no`.

Skrypt ładowania

```
SET TimestampFormat='M/D/YYYY h:mm:ss[.fff] TT'; 
						
Services: 
   Load 
     *, 
     dayend(service_date,-3) as deposit_due_date, 
     dayend(service_date,7) as final_payment_due_date 
     ; 
Load 
service_id, 
service_date, 
amount 
Inline  
[ 
service_id, service_date,amount
1,03/11/2022 9:25:14 AM,231.24 
2,03/12/2022 10:06:54 AM,567.28 
3,03/13/2022 10:44:42 AM,364.28 
4,03/14/2022 11:33:30 AM,575.76 
5,03/15/2022 12:58:14 PM,638.68 
6,03/16/2022 4:23:12 PM,785.38 
7,03/17/2022 6:42:15 PM,967.46 
8,03/18/2022 7:41:16 PM,287.67 
9,03/19/2022 8:14:15 PM,764.45 
10,03/20/2022 9:23:51 PM,875.43 
11,03/21/2022 10:04:41 PM,957.35 
]; 
```

Wyniki

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

* `service_date`

* `deposit_due_date`

* `final_payment_due_date`

Tabela wynikowa

| service\_date | deposit\_due\_date | final\_payment\_due\_date |
| --- | --- | --- |
| 03/11/2022 9:25:14 AM | 3/8/2022 11:59:59 PM | 18.03.2022 23:59:59 |
| 03/12/2022 10:06:54 AM | 3/9/2022 11:59:59 PM | 19.03.2022 23:59:59 |
| 03/13/2022 10:44:42 AM | 3/10/2022 11:59:59 PM | 3/20/2022 11:59:59 PM |
| 03/14/2022 11:33:30 AM | 3/11/2022 11:59:59 PM | 21.03.2022 23:59:59 |
| 03/15/2022 12:58:14 PM | 12.03.2022 23:59:59 | 22.03.2022 23:59:59 |
| 03/16/2022 4:23:12 PM | 3/11/2022 11:59:59 PM | 3/23/2022 11:59:59 PM |
| 03/17/2022 6:42:15 PM | 3/14/2022 11:59:59 PM | 3/24/2022 11:59:59 PM |
| 03/18/2022 7:41:16 PM | 3/15/2022 11:59:59 PM | 25.03.2022 23:59:59 |
| 03/19/2022 8:14:15 PM | 3/16/2022 11:59:59 PM | 26.03.2022 23:59:59 |
| 03/20/2022 9:23:51 PM | 3/17/2022 11:59:59 PM | 3/27/2022 11:59:59 PM |
| 03/21/2022 10:04:41 PM | 18.03.2022 23:59:59 | 3/28/2022 11:59:59 PM |

Wartości nowych pól znajdują się w `TimestampFormat M/D/YYYY h:mm:ss[.fff] TT`. Jako że użyto funkcji `dayend()`, wszystkie wartości znacznika czasu oznaczają ostatnią milisekundę dnia.

Wartości terminu depozytu określają datę trzy dni przed datą usługi, ponieważ drugi argument przekazany do funkcji `dayend()` jest ujemny.

Wartości ostatecznego terminu płatności określają datę siedem dni po dacie usługi, ponieważ drugi argument przekazany do funkcji `dayend()` jest ujemny.

## Przykład 3 – skrypt day\_start

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

#### Skrypt ładowania i wyniki

Przegląd

Otwórz Edytor ładowania danych i dodaj skrypt ładowania na nowej karcie poniżej.

Użyte w tym przykładzie zbiór danych i zastosowanie są takie same jak w poprzednim przykładzie.

Tak jak w poprzednim przykładzie, zostaną utworzone dwa nowe pola:

* `deposit_due_date`: data, kiedy powinien zostać odebrany depozyt. Jest to koniec dnia na trzy dni przed `service_date`.

* `final_payment_due_date`: data, kiedy powinna zostać otrzymana ostateczna płatność. Jest to koniec dnia siedem dni po `service_date`.

Twoja firma chce jednak pracować według zasady, zgodnie z którą dzień roboczy zaczyna się o godzinie 17:00 jednego dnia i kończy się o godzinie 17:00 następnego dnia. Dzięki temu może monitorować transakcje mające miejsce w tych godzinach roboczych.

Aby spełnić te wymogi, w ładowaniu poprzedzającym zostały utworzone dwa powyższe pola przy użyciu funkcji `dayend()` i stosowane są wszystkie trzy argumenty: `time`, `period_no` i `day_start`.

Skrypt ładowania

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

Services: 
   Load 
     *, 
     dayend(service_date,-3,17/24) as deposit_due_date, 
     dayend(service_date,7,17/24) as final_payment_due_date 
     ; 
Load 
service_id, 
service_date, 
amount 
Inline  
[ 
service_id, service_date,amount 
1,03/11/2022 9:25:14 AM,231.24 
2,03/12/2022 10:06:54 AM,567.28 
3,03/13/2022 10:44:42 AM,364.28 
4,03/14/2022 11:33:30 AM,575.76 
5,03/15/2022 12:58:14 PM,638.68 
6,03/16/2022 4:23:12 PM,785.38 
7,03/17/2022 6:42:15 PM,967.46 
8,03/18/2022 7:41:16 PM,287.67 
9,03/19/2022 8:14:15 PM,764.45 
10,03/20/2022 9:23:51 PM,875.43 
11,03/21/2022 10:04:41 PM,957.35 
]; 
```

Wyniki

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

* `service_date`

* `deposit_due_date`

* `final_payment_due_date`

Tabela wynikowa

| service\_date | deposit\_due\_date | final\_payment\_due\_date |
| --- | --- | --- |
| 03/11/2022 9:25:14 AM | 3/8/2022 4:59:59 PM | 3/18/2022 4:59:59 PM |
| 03/12/2022 10:06:54 AM | 3/9/2022 4:59:59 PM | 3/19/2022 4:59:59 PM |
| 03/13/2022 10:44:42 AM | 3/10/2022 4:59:59 PM | 3/20/2022 4:59:59 PM |
| 03/14/2022 11:33:30 AM | 3/11/2022 4:59:59 PM | 3/21/2022 4:59:59 PM |
| 03/15/2022 12:58:14 PM | 3/12/2022 4:59:59 PM | 3/22/2022 4:59:59 PM |
| 03/16/2022 4:23:12 PM | 3/13/2022 4:59:59 PM | 3/23/2022 4:59:59 PM |
| 03/17/2022 6:42:15 PM | 3/14/2022 4:59:59 PM | 3/24/2022 4:59:59 PM |
| 03/18/2022 7:41:16 PM | 3/15/2022 4:59:59 PM | 3/25/2022 4:59:59 PM |
| 03/19/2022 8:14:15 PM | 3/16/2022 4:59:59 PM | 3/26/2022 4:59:59 PM |
| 03/20/2022 9:23:51 PM | 3/17/2022 4:59:59 PM | 3/27/2022 4:59:59 PM |
| 03/21/2022 10:04:41 PM | 3/18/2022 4:59:59 PM | 3/28/2022 4:59:59 PM |

Choć daty pozostały takie same jak w przykładzie 2, teraz mają znacznik czasu ostatniej milisekundy przed godziną 17:00, ponieważ w trzecim argumencie, `day_start`, do funkcji `dayend()` przekazano wartość 17/24.

## Przykład – przykład z wykresem

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

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

Przegląd

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

Użyte w tym przykładzie zbiór danych i scenariusz są takie same, jak w dwóch poprzednich przykładach. Firma chce pracować według zasady, zgodnie z którą dzień roboczy zaczyna się o godzinie 17:00 jednego dnia i kończy się o godzinie 17:00 następnego dnia.

Tak jak w poprzednim przykładzie, zostaną utworzone dwa nowe pola:

* deposit\_due\_date: data, kiedy powinien zostać odebrany depozyt. Jest to koniec dnia na trzy dni przed service\_date.

* final\_payment\_due\_date: data, kiedy powinna zostać otrzymana ostateczna płatność. Jest to koniec dnia siedem dni po service\_date.

Skrypt ładowania

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

Services: 
Load 
service_id, 
service_date, 
amount 
Inline  
[ 
service_id, service_date,amount 
1,03/11/2022 9:25:14 AM,231.24 
2,03/12/2022 10:06:54 AM,567.28 
3,03/13/2022 10:44:42 AM,364.28 
4,03/14/2022 11:33:30 AM,575.76 
5,03/15/2022 12:58:14 PM,638.68 
6,03/16/2022 4:23:12 PM,785.38 
7,03/17/2022 6:42:15 PM,967.46 
8,03/18/2022 7:41:16 PM,287.67 
9,03/19/2022 8:14:15 PM,764.45 
10,03/20/2022 9:23:51 PM,875.43 
11,03/21/2022 10:04:41 PM,957.35 
]; 
```

Wyniki

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

service\_date.

Aby utworzyć pole deposit\_due\_date, należy utworzyć następującą miarę.

=dayend(service\_date,-3,17/24).

Następnie, aby utworzyć pole final\_payment\_due\_date, należy utworzyć następującą miarę:

=dayend(service\_date,7,17/24).

Tabela wynikowa

| service\_date | =dayend(service\_date,-3,17/24) | =dayend(service\_date,7,17/24 |
| --- | --- | --- |
| 03/11/2022 | 3/8/2022 16:59:59 PM | 3/18/2022 16:59:59 PM |
| 03/12/2022 | 3/9/2022 16:59:59 PM | 3/19/2022 16:59:59 PM |
| 03/13/2022 | 3/10/2022 16:59:59 PM | 3/20/2022 16:59:59 PM |
| 03/14/2022 | 3/11/2022 16:59:59 PM | 3/21/2022 16:59:59 PM |
| 03/15/2022 | 3/12/2022 16:59:59 PM | 3/22/2022 16:59:59 PM |
| 03/16/2022 | 3/13/2022 16:59:59 PM | 3/23/2022 16:59:59 PM |
| 03/17/2022 | 3/14/2022 16:59:59 PM | 3/24/2022 16:59:59 PM |
| 18.03.2022 | 3/15/2022 16:59:59 PM | 3/25/2022 16:59:59 PM |
| 03/19/2022 | 3/16/2022 16:59:59 PM | 3/26/2022 16:59:59 PM |
| 03/20/2022 | 3/17/2022 16:59:59 PM | 3/27/2022 16:59:59 PM |
| 03/21/2022 | 3/18/2022 16:59:59 PM | 3/28/2022 16:59:59 PM |

Wartości nowych pól znajdują się w TimestampFormat M/D/YYYY h:mm:ss[.fff] TT. Jako że użyto funkcji dayend(), wszystkie wartości znacznika czasu oznaczają ostatnią milisekundę dnia.

Wartości terminu płatności określają datę trzy dni przed datą usługi, ponieważ drugi argument przekazany do funkcji dayend() jest ujemny.

Wartości ostatecznego terminu płatności określają datę siedem dni po dacie usługi, ponieważ drugi argument przekazany do funkcji dayend() jest ujemny.

Daty mają znacznik czasu ostatniej milisekundy przed godziną 17:00, ponieważ w trzecim argumencie, day\_start, do funkcji dayend() przekazano wartość 17/24.

## Dowiedz się więcej

* [Ładowanie danych z wcześniej załadowanej tabeli](https://help.qlik.com/pl-PL/sense/November2025/Subsystems/Hub/Content/Sense_Hub/Scripting/load-data-from-previously-loaded-table.htm)

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