# makedate — funkcja skryptu i funkcja wykresu

Ta funkcja zwraca datę obliczoną na podstawie parametrów rok YYYY, miesiąc MM i dzień DD.

Składnia:

MakeDate(YYYY [ , MM [ , DD ] ])

Typ zwracanych danych: dual

Argumenty

| Argument | Opis |
| --- | --- |
| YYYY | Rok jest liczbą całkowitą. |
| MM | Miesiąc jest liczbą całkowitą. Jeśli nie zostanie podany miesiąc, przyjmowana jest wartość 1 (styczeń). |
| DD | Dzień jest liczbą całkowitą. Jeśli nie zostanie podany dzień, przyjmowana jest wartość 1 (pierwszy). |

## Kiedy używać

Funkcja `makedate()` znajduje zastosowanie do generowania kalendarzy w skryptach do generowania danych. Ponadto można jej użyć, gdy pole daty nie jest bezpośrednio dostępne jako data, ale potrzebuje pewnych transformacji, aby pobrać rok, miesiąc i dzień.

W tych przykładach używany jest format daty MM/DD/YYYY. Format daty jest określony w instrukcji `SET DateFormat` 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 |
| --- | --- |
| `makedate(2012)` | Zwraca wartość 01/01/2012. |
| `makedate(12)` | Zwraca wartość 01/01/2012. |
| `makedate(2012,12)` | Zwraca wartość 12/01/2012. |
| `makedate(2012,2,14)` | Zwraca wartość 02/14/2012. |

## 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ład 1 — Przykład podstawowy

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makedate.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 zestaw transakcji za rok 2018, który jest ładowany do tabeli o nazwie „`Transactions`”.

* Pole danych w formacie zmiennej systemowej `DateFormat` (MM/DD/RRRR).

* Utworzenie pola `transaction_date`, które zwraca datę w formacie MM/DD/RRRR.

Skrypt ładowania

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        makedate(transaction_year, transaction_month, transaction_day) as transaction_date
        ; 
Load * Inline [
transaction_id, transaction_year, transaction_month, transaction_day, transaction_amount, transaction_quantity, customer_id
3750, 2018, 08, 30, 12423.56, 23, 2038593
3751, 2018, 09, 07, 5356.31, 6, 203521
3752, 2018, 09, 16, 15.75, 1, 5646471
3753, 2018, 09, 22, 1251, 7, 3036491
3754, 2018, 09, 22, 21484.21, 1356, 049681
3756, 2018, 09, 22, -59.18, 2, 2038593
3757, 2018, 09, 23, 3177.4, 21, 203521
];
```

Wyniki

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

* `transaction_year`

* `transaction_month`

* `transaction_day`

* `transaction_date`

Tabela wynikowa

| transaction\_year | transaction\_month | transaction\_day | transaction\_date |
| --- | --- | --- | --- |
| 2018 | 08 | 30 | 08/30/2018 |
| 2018 | 09 | 07 | 09/07/2018 |
| 2018 | 09 | 16 | 09/16/2018 |
| 2018 | 09 | 22 | 09/22/2018 |
| 2018 | 09 | 23 | 09/23/2018 |

Pole `transaction_date` jest tworzone w instrukcji ładowania poprzedzającego przez użycie funkcji `makedate()` i przekazanie pól roku, miesiąca i dnia jako argumentów funkcji.

Następnie funkcja ta łączy i konwertuje te wartości na pole daty oraz zwraca wynik w formacie zmiennej systemowej `DateFormat`.

## Przykład 2 – zmodyfikowana zmienna systemowa DateFormat

[](https://help.qlik.com/en-US/sense/Subsystems/Hub/Content/Sense_Hub/Scripting/DateAndTimeFunctions/makedate.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 pierwszym przykładzie.

* Utworzenie pola `transaction_date` w formacie DD/MM/RRRR bez modyfikacji zmiennej systemowej `DateFormat`.

Skrypt ładowania

```
SET DateFormat='MM/DD/YYYY';

Transactions:
    Load
        *,
        date(makedate(transaction_year, transaction_month, transaction_day), ‘DD/MM/YYYY’) as transaction_date
        ; 
Load * Inline [
transaction_id, transaction_year, transaction_month, transaction_day, transaction_amount, transaction_quantity, customer_id
3750, 2018, 08, 30, 12423.56, 23, 2038593
3751, 2018, 09, 07, 5356.31, 6, 203521
3752, 2018, 09, 16, 15.75, 1, 5646471
3753, 2018, 09, 22, 1251, 7, 3036491
3754, 2018, 09, 22, 21484.21, 1356, 049681
3756, 2018, 09, 22, -59.18, 2, 2038593
3757, 2018, 09, 23, 3177.4, 21, 203521
];
```

Wyniki

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

* `transaction_year`

* `transaction_month`

* `transaction_day`

* `transaction_date`

Tabela wynikowa

| transaction\_year | transaction\_month | transaction\_day | transaction\_date |
| --- | --- | --- | --- |
| 2018 | 08 | 30 | 30/08/2018 |
| 2018 | 09 | 07 | 07/09/2018 |
| 2018 | 09 | 16 | 16/09/2018 |
| 2018 | 09 | 22 | 22/09/2018 |
| 2018 | 09 | 23 | 23/09/2018 |

W tym przypadku funkcja `makedate()` jest zagnieżdżona w funkcji `date()`. Drugi argument funkcji `date()` ustawia format wyników funkcji `makedate()` na wymagany DD/MM/RRRR.

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

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

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

Przegląd

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

Skrypt ładowania zawiera:

* Zestaw danych zawierający zestaw transakcji za rok 2018, który jest ładowany do tabeli o nazwie „`Transactions`”.

* Daty transakcji przekazane w dwóch polach: `year` i `month`.

Utwórz miarę obiektu wykresu, `transaction_date`, która zwraca datę w formacie MM/DD/RRRR.

Skrypt ładowania

```
SET DateFormat='MM/DD/YYYY';

Transactions:
Load * Inline [
transaction_id, transaction_year, transaction_month, transaction_amount, transaction_quantity, customer_id
3750, 2018, 08, 12423.56, 23, 2038593
3751, 2018, 09, 5356.31, 6, 203521
3752, 2018, 09, 15.75, 1, 5646471
3753, 2018, 09, 1251, 7, 3036491
3754, 2018, 09, 21484.21, 1356, 049681
3756, 2018, 09, -59.18, 2, 2038593
3757, 2018, 09, 3177.4, 21, 203521
];
```

Wyniki

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

* `year`

* `month`

Aby obliczyć `transaction_date`, utwórz następującą miarę:

`=makedate(transaction_year,transaction_month)`

Tabela wynikowa

| transaction\_year | transaction\_month | transaction\_date |
| --- | --- | --- |
| 2018 | 08 | 08/01/2018 |
| 2018 | 09 | 09/01/2018 |

Miara `transaction_date` jest tworzona w obiekcie wykresu za pomocą funkcji `makedate()`, której jako argumenty przekazano pola roku i miesiąca.

Następnie funkcja ta łączy te wartości, jak również zakładaną wartość dnia 01. Następnie te wartości zostają przekonwertowane na pole daty oraz zostaje zwrócony wynik w formacie zmiennej systemowej `DateFormat`.

## Przykład 4 — zastosowanie

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

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

Przegląd

Utwórz zestaw danych kalendarza dla roku kalendarzowego 2022.

Skrypt ładowania

```
SET DateFormat='MM/DD/YYYY';

Calendar:
	load 
		*
    where year(date)=2022;
load
	date(recno()+makedate(2021,12,31)) as date
AutoGenerate 400;
```

Wyniki

Tabela wynikowa

| date |
| --- |
| 01/01/2022 |
| 01/02/2022 |
| 01/03/2022 |
| 01/04/2022 |
| 01/05/2022 |
| 01/06/2022 |
| 01/07/2022 |
| 01/08/2022 |
| 01/09/2022 |
| 01/10/2022 |
| 01/11/2022 |
| 01/12/2022 |
| 01/13/2022 |
| 01/14/2022 |
| 01/15/2022 |
| 01/16/2022 |
| 01/17/2022 |
| 01/18/2022 |
| 01/19/2022 |
| 01/20/2022 |
| 01/21/2022 |
| 01/22/2022 |
| 01/23/2022 |
| 01/24/2022 |
| 01/25/2022 |
| Jeszcze 340 wierszy |

Funkcja makedate() tworzy wartość daty 31 grudnia 2021 r. Funkcja recno() dostarcza numer bieżącego rekordu, który jest obecnie ładowany do tabeli (numeracja zaczyna się od 1). W efekcie pierwszy rekord ma datę 1 stycznia 2022 r. Każde kolejne wywołanie funkcji recno() będzie zwiększać tę datę o 1. To wyrażenie znajduje się w funkcji date(), która konwertuje wartość na datę. Ten proces zostaje wykonany 400 razy przez funkcję autogenerate. Na koniec, wykorzystując ładowanie poprzedzające, można użyć warunku where, aby załadować tylko daty z roku 2022. Ten skrypt generuje kalendarz zawierający każdą datę z 2022 roku.