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: dual
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.
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ć
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
)
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/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 – prosty przykład
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Prosty zbiór 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).
Poprzednie ładowanie, 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
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
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
Poprzednie ładowanie, w którym użyto funkcji daystart() i przekazano wszystkie trzy parametry: time, period_no i day_start. To poprzednie ładowanie 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.
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/21/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
Przegląd
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Ten sam zestaw danych i scenariusz co w poprzednim przykładzie.
To samo uprzednie ładowanie, co w poprzednim przykładzie.
W tym przykładzie ustawiliśmy początek i koniec dnia roboczego na godzinę 7:00 każdego dnia.
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
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
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 scenariusza 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.
Załaduj dane i otwórz arkusz. Utwórz nową tabelę i dodaj to pole jako wymiar: due_date.
Aby utworzyć pole early_repayment_period, należy utworzyć następującą miarę:
=daystart(due_date,-7,7/24)
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.
Czy ta strona była pomocna?
Jeżeli natkniesz się na problemy z tą stroną lub jej zawartością — literówkę, brakujący krok lub błąd techniczny — daj nam znać, co możemy poprawić!