# inday funkcja skryptu i funkcja wykresu

Ta funkcja zwraca wartość True, jeśli znacznik czasu timestamp należy do dnia zawierającego wartość base\_timestamp.

Składnia:

InDay (timestamp, base\_timestamp, period\_no[, day\_start])

Schemat funkcji `inday`

Schemat funkcji `inday`

Schemat funkcji `inday`inday ![Diagram pokazujący sposób użycia funkcji inday do identyfikowania segmentu czasu i zwracania wyników logicznych na podstawie tego segmentu.](https://help.qlik.com/pl-PL/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inday-diagram.png)

Funkcja `inday()` używa argumentu `base_timestamp` do określenia, w którym dniu przypada znacznik czasu. Godzina rozpoczęcia dnia to domyślnie północ, ale możesz zmienić godzinę rozpoczęcia dnia, używając argumentu `day_start` funkcji `inday()`. Po zdefiniowaniu tego dnia funkcja będzie zwracać wyniki logiczne podczas porównywania określonych wartości znaczników czasu z tym dniem.

Kiedy używać inday

Funkcja `inday()` zwraca wynik logiczny. Zazwyczaj ten typ funkcji będzie używany jako warunek w `if expression`. Zwraca to agregację lub obliczenia zależnie od tego, czy oceniana data nastąpiła w dniu danego znacznika czasu.

Na przykład funkcja `inday()` może służyć do identyfikacji całego sprzętu wyprodukowanego w danym dniu.

Typ zwracanych danych: Logiczna

W Qlik Sense wartość logiczna Prawda jest reprezentowana przez -1, a wartość Fałsz jest reprezentowana przez 0.

Argumenty

| Argument | Opis |
| --- | --- |
| `timestamp` | Data i godzina, która ma być porównana z wartością `base_timestamp`. |
| `base_timestamp` | Data i godzina używane do oceny znacznika czasu. |
| `period_no` | Dzień może zostać przesunięty o wartość `period_no`. `period_no` jest liczbą całkowitą, gdzie 0 oznacza dzień zawierający wartość `base_timestamp`. Wartości ujemne parametru `period_no` oznaczają dni poprzednie, a wartości dodatnie — dni następne. |
| `day_start` | Jeśli wymagane jest korzystanie z dni, które nie zaczynają się o północy, należy wskazać przesunięcie w postaci ułamka dnia w parametrze `day_start`, np. 0,125 będzie oznaczać godzinę trzecią rano. |

## 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łady funkcji

| Przykład | Wynik |
| --- | --- |
| `inday` ('01/12/2006 12:23:00 PM', '01/12/2006 12:00:00 AM', 0) | Zwraca prawdę |
| ` inday  `('01/12/2006 12:23:00 PM', '01/13/2006 12:00:00 AM', 0) | Zwraca fałsz |
| `inday` ('01/12/2006 12:23:00 PM', '01/12/2006 12:00:00 AM', -1) | Zwraca fałsz |
| `inday` ('01/11/2006 12:23:00 PM', '01/12/2006 12:00:00 AM', -1) | Zwraca prawdę |
| `inday` ('01/12/2006 12:23:00 PM', '01/12/2006 12:00:00 AM', 0, 0.5) | Zwraca fałsz |
| `inday` ('01/12/2006 11:23:00 AM', '01/12/2006 12:00:00 AM', 0, 0.5) | Zwraca prawdę |

## Przykład 1 – instrukcja ładowania (skrypt)

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

#### Skrypt ładowania i wyniki

Przegląd

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

Skrypt ładowania zawiera:

* Zestaw danych zawierający transakcje wg znacznika czasu, który jest ładowany do tabeli o nazwie `Transactions`.

* Pole daty, które jest przekazywane w formacie `TimeStamp` zmiennej systemowej `(M/D/YYYY h:mm:ss[.fff] TT)`.

* Ładowanie poprzedzające, zawierające funkcję `inday()`, która jest ustawiona jako pole `in_day`.

Skrypt ładowania

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

Transactions:
    Load
        *,
        inday(date,'01/05/2022 12:00:00 AM', 0) as in_day
        ;
Load
*
Inline 
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

Wyniki

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

* `date`

* `in_day`

Tabela wynikowa

| date | w\_dniu |
| --- | --- |
| 01.01.2022 19:34:46 | 0 |
| 01.01.2022 22:10:22 | 0 |
| 02.01.2022 08:35:54 | 0 |
| 03.01.2022 14:21:53 | 0 |
| 04.01.2022 18:49:38 | 0 |
| 04.01.2022 22:58:34 | 0 |
| 05.01.2022 5:40:49 rano | -1 |
| 05.01.2022 11:29:38 rano | -1 |
| 05.01.2022 7:04:57 po południu | -1 |
| 01/06/2022 08:49:09 | 0 |

Pole `in_day` zostało utworzone w instrukcji ładowania poprzedzającego za pomocą funkcji `inday()`, której jako argumenty przekazano pole daty, wpisany w kod znacznik czasu oznaczający 5 stycznia i `period_no` o wartości `0`.

## Przykład 2 – period\_no

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

#### Skrypt ładowania i wyniki

Przegląd

Skrypt ładowania wykorzystuje ten sam zestaw danych i zastosowanie, które były używane w pierwszym przykładzie.

Jednak w tym przykładzie chodzi o obliczenie, czy data transakcji wypada dwa dni przed 5 stycznia.

Skrypt ładowania

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

Transactions:
    Load
        *,
        inday(date,'01/05/2022 12:00:00 AM', -2) as in_day
        ;
Load
*
Inline 
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

Wyniki

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

* `date`

* `in_day`

Tabela wynikowa

| date | w\_dniu |
| --- | --- |
| 01.01.2022 19:34:46 | 0 |
| 01.01.2022 22:10:22 | 0 |
| 02.01.2022 08:35:54 | 0 |
| 03.01.2022 14:21:53 | -1 |
| 04.01.2022 18:49:38 | 0 |
| 04.01.2022 22:58:34 | 0 |
| 05.01.2022 05:40:49 | 0 |
| 05.01.2022 11:29:38 | 0 |
| 01/05/2022 19:04:57 | 0 |
| 01/06/2022 08:49:09 | 0 |

W tym przypadku, w którym funkcji `inday()` przekazano argument przesunięcia `period_no` o wartości `-2`, funkcja ta sprawdza, czy każda transakcja miała miejsce 3 stycznia. Można to zweryfikować w tabeli wyników, w której jedna transakcja zwraca wartość logiczną PRAWDA.

## Przykład 3 – day\_start

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

#### Skrypt ładowania i wyniki

Przegląd

Skrypt ładowania wykorzystuje ten sam zbiór danych i scenariusz, które były używane w poprzednich przykładach.

Jednak w tym przykładzie zgodnie z polityką firmy dzień roboczy zaczyna i kończy się o godzinie 7:00.

Skrypt ładowania

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

Transactions:
    Load
        *,
        inday(date,'01/05/2022 12:00:00 AM', 0, 7/24) as in_day
        ;
Load
*
Inline 
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

Wyniki

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

* `date`

* `in_day`

Tabela wynikowa

| date | w\_dniu |
| --- | --- |
| 01.01.2022 19:34:46 | 0 |
| 01.01.2022 22:10:22 | 0 |
| 02.01.2022 08:35:54 | 0 |
| 03.01.2022 14:21:53 | 0 |
| 04.01.2022 18:49:38 | -1 |
| 04.01.2022 22:58:34 | -1 |
| 05.01.2022 05:40:49 | -1 |
| 05.01.2022 11:29:38 | 0 |
| 01/05/2022 19:04:57 | 0 |
| 01/06/2022 08:49:09 | 0 |

Ponieważ funkcji `inday()` przekazano argument `start_day` o wartości 7/24, oznaczającej godzinę 7:00, funkcja ta sprawdza, czy każda transakcja miała miejsce między godziną 7:00 4 stycznia a godziną 7:00 5 stycznia.

Można to zweryfikować w tabeli wynikowej, w której transakcje po godzinie 7:00 4 stycznia zwracają wartość logiczną PRAWDA, natomiast transakcje, które miały miejsce po godzinie 7:00 5 stycznia zwracają wartość logiczną FAŁSZ.

## Przykład 4 – obiekt wykresu

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

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

Przegląd

Skrypt ładowania wykorzystuje ten sam zbiór danych i scenariusz, które były używane w poprzednich przykładach.

Jednak w tym przykładzie zbiór danych pozostaje bez zmian i jest ładowany do aplikacji. Będą wykonywane obliczenia mające na celu stwierdzenie, czy transakcja ma miejsce 5 stycznia, przez utworzenie miary w obiekcie wykresu.

Skrypt ładowania

```

Transactions:
Load
*
Inline 
[
id,date,amount
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

Wyniki

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

* `date`

Aby obliczyć, czy transakcja ma miejsce 5 stycznia, utwórz następującą miarę:

`=inday(date,'01/05/2022 12:00:00 AM',0)`

Tabela wynikowa

| date | inday(date,'01/05/2022 00:00:00',0) |
| --- | --- |
| 01.01.2022 19:34:46 | 0 |
| 01.01.2022 22:10:22 | 0 |
| 02.01.2022 08:35:54 | 0 |
| 03.01.2022 14:21:53 | 0 |
| 04.01.2022 18:49:38 | 0 |
| 04.01.2022 22:58:34 | 0 |
| 05.01.2022 5:40:49 rano | -1 |
| 05.01.2022 11:29:38 rano | -1 |
| 05.01.2022 7:04:57 po południu | -1 |
| 01/06/2022 08:49:09 | 0 |

## Przykład 5 — zastosowanie

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

#### Skrypt ładowania i wyniki

Przegląd

W tym przykładzie stwierdzono, że z powodu błędu sprzętowego produkty wytworzone 5 stycznia były wadliwe. Użytkownik końcowy chciałby, aby obiekt wykresu wyświetlał według dat status produktów: „defective” (wadliwe) lub „faultless” (bez wad) oraz koszt produktów wytworzonych 5 stycznia.

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

Skrypt ładowania zawiera:

* Zestaw danych ładowany do tabeli „Products”.

* Tabela zawiera następujące pola:

  * identyfikator produktu,

  * czas produkcji

  * cena.

Skrypt ładowania

```

Products:
Load
*
Inline 
[
product_id,manufacture_date,cost_price
9497,'01/01/2022 7:34:46 PM',13.24
9498,'01/01/2022 10:10:22 PM',31.43
9499,'01/02/2022 8:35:54 AM',36.34
9500,'01/03/2022 2:21:53 PM',51.75
9501,'01/04/2022 6:49:38 PM',15.35
9502,'01/04/2022 10:58:34 PM',74.34
9503,'01/05/2022 5:40:49 AM',73.53
9504,'01/05/2022 11:29:38 AM',50.00
9505,'01/05/2022 7:04:57 PM',47.25
9506,'01/06/2022 8:49:09 AM',74.23
];
```

Wyniki

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

=dayname(manufacture\_date)

Utwórz następujące miary:

* =if(only(InDay(manufacture\_date,makedate(2022,01,05),0)),'Defective','Faultless')

* =sum(cost\_price)

Ustaw Formatowanie liczb miary na Waluta.

W sekcji Wygląd wyłącz Sumy.

Tabela wynikowa

| nazwa\_dnia(data\_produkcji) | =if(only(InDay(manufacture\_date,makedate(2022,01,05),0)),'Wadliwy','Bezwadny') | =sum(cost\_price) |
| --- | --- | --- |
| 01/01/2022 | Faultless | 44.67 |
| 01/02/2022 | Faultless | 36.34 |
| 01/03/2022 | Faultless | 51.75 |
| 01/04/2022 | Faultless | 89.69 |
| 01/05/2022 | Defective | 170.78 |
| 01/06/2022 | Faultless | 74.23 |

Funkcja inday() zwraca wartość logiczną podczas oceny dat wytworzenia każdego z produktów. W przypadku każdego produktu wyprodukowanego 5 stycznia funkcja inday() zwraca wartość logiczną PRAWDA i oznacza produkty jako „Defective” (Wadliwe). W przypadku każdego produktu zwracającego wartość FALSE, a zatem niewyprodukowanego w tym dniu, oznacza ona produkty jako „Faultless” (Bez wad).