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. Więcej informacji można znaleźć w temacie Modyfikowanie ustawień regionalnych na potrzeby aplikacji i skryptów.
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.
Otwórz Edytor ładowania danych i poniżej dodaj skrypt ładowania do nowej karty.
Skrypt ładowania zawiera:
Prosty zestaw 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.
Ładowanie poprzedzające, 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
Ładowanie poprzedzające, w którym użyto funkcji daystart() i przekazano wszystkie trzy parametry: time, period_no i day_start. To ładowanie poprzedzające 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 ładowanie poprzedzające 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ć!