# 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/sense/November2024/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ć

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: Wartość 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/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 |
| --- | --- |
| `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/sense/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 karty.

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

| data | in\_day |
| --- | --- |
| 01/01/2022 7:34:46 PM | 0 |
| 01/01/2022 10:10:22 PM | 0 |
| 01/02/2022 8:35:54 AM | 0 |
| 01/03/2022 2:21:53 PM | 0 |
| 01/04/2022 6:49:38 PM | 0 |
| 01/04/2022 10:58:34 PM | 0 |
| 01/05/2022 5:40:49 AM | -1 |
| 01/05/2022 11:29:38 AM | -1 |
| 01/05/2022 7:04:57 PM | -1 |
| 01/06/2022 8:49:09 AM | 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/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/inday.htm)

#### Skrypt ładowania i wyniki

Przegląd

Skrypt ładowania wykorzystuje ten sam zestaw danych i scenariusz, 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

| data | in\_day |
| --- | --- |
| 01/01/2022 7:34:46 PM | 0 |
| 01/01/2022 10:10:22 PM | 0 |
| 01/02/2022 8:35:54 AM | 0 |
| 01/03/2022 2:21:53 PM | -1 |
| 01/04/2022 6:49:38 PM | 0 |
| 01/04/2022 10:58:34 PM | 0 |
| 01/05/2022 5:40:49 AM | 0 |
| 01/05/2022 11:29:38 AM | 0 |
| 01/05/2022 7:04:57 PM | 0 |
| 01/06/2022 8:49:09 AM | 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/sense/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

| data | in\_day |
| --- | --- |
| 01/01/2022 7:34:46 PM | 0 |
| 01/01/2022 10:10:22 PM | 0 |
| 01/02/2022 8:35:54 AM | 0 |
| 01/03/2022 2:21:53 PM | 0 |
| 01/04/2022 6:49:38 PM | -1 |
| 01/04/2022 10:58:34 PM | -1 |
| 01/05/2022 5:40:49 AM | -1 |
| 01/05/2022 11:29:38 AM | 0 |
| 01/05/2022 7:04:57 PM | 0 |
| 01/06/2022 8:49:09 AM | 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/sense/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

| data | inday(date,'01/05/2022 12:00:00 AM',0) |
| --- | --- |
| 01/01/2022 7:34:46 PM | 0 |
| 01/01/2022 10:10:22 PM | 0 |
| 01/02/2022 8:35:54 AM | 0 |
| 01/03/2022 2:21:53 PM | 0 |
| 01/04/2022 6:49:38 PM | 0 |
| 01/04/2022 10:58:34 PM | 0 |
| 01/05/2022 5:40:49 AM | -1 |
| 01/05/2022 11:29:38 AM | -1 |
| 01/05/2022 7:04:57 PM | -1 |
| 01/06/2022 8:49:09 AM | 0 |

## Przykład 5 — scenariusz

[](https://help.qlik.com/en-US/sense/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 karty.

Skrypt ładowania zawiera:

* Zestaw danych ładowany do tabeli „Products”.

* Tabela zawiera następujące pola:

  * product ID

  * manufacture time

  * cost price

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

| dayname(manufacture\_date) | =if(only(InDay(manufacture\_date,makedate(2022,01,05),0)),'Defective','Faultless') | =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).