Deze functie retourneert een waarde die overeenkomt met een tijdstempel met de eerste milliseconde van de dag in het argument time. De standaarduitvoernotatie is de TimestampFormat die is ingesteld in het script.
Syntaxis:
DayStart(time[, [period_no[, day_start]])
Retourgegevenstypen: dual
Argumenten
Argument
Beschrijving
time
De te evalueren tijdstempel.
period_no
period_no is een geheel getal, of een uitdrukking die wordt herleid tot een geheel getal, waarbij de waarde 0 de dag aangeeft die time bevat. Negatieve waarden in period_no geven voorafgaande dagen aan en positieve waarden geven volgende dagen aan.
day_start
Als u wilt opgeven dat dagen niet om middernacht beginnen, geeft u een verschuiving aan als een fractie van een dag in day_start. Bijvoorbeeld 0.125 om 03.00 uur aan te geven.
Met andere woorden: om de offset te maken, verdeelt u de begintijd met 24 uur. Bijvoorbeeld: om een dag te laten beginnen om 7.00 uur, gebruikt u de fractie 7/24.
Wanneer gebruiken
De functie daystart() wordt doorgaans gebruikt als onderdeel van een uitdrukking als de gebruiker wil dat in de berekening het deel van de dag wordt gebruikt dat al is geweest. Het zou bijvoorbeeld kunnen worden gebruikt om het totale salaris te berekenen dat werknemers op een dag tot dusver hebben verdiend.
Deze voorbeelden gebruiken de tijdstempelopmaak 'M/D/YYYY h:mm:ss[.fff] TT'. De tijdstempelopmaak wordt opgegeven in de opdracht SET TimeStamp boven aan uw load-script voor gegevens. Wijzig de opmaak in de voorbeelden zodat deze in uw behoeften voorziet.
Voorbeelden van functies
Voorbeeld
Resultaat
daystart('01/25/2013 4:45:00 PM')
Retourneert 1/25/2013 12:00:00 AM.
daystart('1/25/2013 4:45:00 PM', -1)
Retourneert 1/24/2013 12:00:00 AM.
daystart('1/25/2013 16:45:00',0,0.5
)
Retourneert 1/25/2013 12:00:00 PM.
Landinstellingen
Tenzij anders aangegeven, wordt in de voorbeelden in dit onderwerp de volgende datumindeling gebruikt: MM/DD/JJJJ. De datumopmaak wordt opgegeven in de opdracht SET DateFormat in uw script voor het laden van gegevens. De standaard datumindeling is mogelijk anders op uw systeem vanwege landinstellingen en andere factoren. U kunt de indelingen in de voorbeelden wijzigen zodat deze aansluiten op uw behoeften. Of u kunt de indelingen in uw load-script wijzigen zodat ze overeenkomen met deze voorbeelden.
Standaard landinstellingen in apps zijn gebaseerd op de regionale systeeminstellingen van de computer of server waarop Qlik Sense is geïnstalleerd. Als de Qlik Sense-server die u gebruikt is ingesteld op Zweden, gebruikt de editor voor laden van gegevens de Zweedse landinstellingen voor datums, tijd en valuta. Deze landinstellingen voor indelingen zijn niet gerelateerd aan de taal die wordt weergegeven in de gebruikersinterface van Qlik Sense. Qlik Sense wordt weergegeven in dezelfde taal als de browser die u gebruikt.
Voorbeeld 1 – Eenvoudig voorbeeld
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Een eenvoudige gegevensset met een lijst met datums, die wordt geladen in een tabel met de naam Calendar.
De standaard TimeStampFormat-systeemvariabele (M/D/YYYY h:mm:ss[.fff] TT wordt gebruikt.
Een voorafgaande lading die een extra veld maakt met de naam SOD_timestamp met behulp van de daystart()functie.
Naast de datum worden er geen extra parameters aan de functie toegevoegd.
Load-script
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
];
Resultaten
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
date
SOD_timestamp
Resultatentabel
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
Zoals in de bovenstaande tabel te zien is, wordt de eind van de dag-tijdstempel gegenereerd voor iedere datum in uw gegevensset. Het tijdstempel is de indeling van de systeemvariabele TimestampFormat M/D/YYYY h:mm:ss[.fff] TT.
Voorbeeld 2 – period_no
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Een gegevensset met parkeerboetes, die wordt geladen in de tabel Fines. De gegevensset bevat de volgende velden:
id
due_date
number_plate
amount
Een voorafgaande lading met de daystart()-functie en met de drie parameters: time, period_no en day_start. Deze voorafgaande lading maakt de volgende twee nieuwe datumvelden aan:
Een early_repayment_period-datumveld dat zeven dagen vóór de vervaldatum van de betaling begint.
Een late_penalty_period-datumveld dat veertien dagen na de vervaldatum van de betaling begint.
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
due_date
early_repayment_period
late_penalty_period
Resultatentabel
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/15/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
De waarden van de nieuwe velden hebben de TimestampFormat M/DD/YYYY tt. Omdat de daystart()-functie is gebruikt, zijn de tijdstempelwaarden allemaal de eerste milliseconde van de dag.
De vroege betaalperiode-waarden zijn zeven dagen vóór de vervaldatum, omdat het tweede argument dat in de daystart()-functie wordt doorgegeven negatief is.
De late betaalperiode-waarden zijn veertien dagen na de vervaldatum, omdat het tweede argument dat in de daystart()-functie wordt doorgegeven positief is.
Voorbeeld 3 – day_start
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Het load-script bevat:
Dezelfde gegevensset en het scenario uit het vorige voorbeeld.
Dezelfde voorafgaande lading als het vorige voorbeeld.
In dit voorbeeld laten we de werkdag elke dag beginnen en eindigen om 7:00 AM.
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg deze velden toe als dimensies:
due_date
early_repayment_period
late_penalty_period
Resultatentabel
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
De datums hebben nu een tijdstempel van 7:00 AM, omdat de waarde van het day_start-argument dat in de daystart()-functie is doorgegeven, 7/24 was. Dit stelt het begin van de dag in op 7:00 AM.
Omdat het due_date-veld geen tijdstempel heeft, wordt dit behandeld als 12:00 AM, waardoor de dag nog deel uitmaakt van de vorige dag omdat de dagen beginnen en eindigen om 7:00 AM. Daarom begint de vroege-terugbetalingsperiode voor een boete die op 11 februari betaald moet zijn, op 3 februari om 7:00 AM.
Voorbeeld 4 – Diagramobjectvoorbeeld
Overzicht
Open de editor voor laden van gegevens en voeg het onderstaande load-script toe aan een nieuw tabblad.
Dit voorbeeld gebruikt dezelfde gegevensset en hetzelfde scenario als het vorige voorbeeld.
Maar alleen de originele Fines-tabel wordt in de applicatie geladen waarbij de twee extra vervaldatumwaarden worden berekend in een diagramobject.
Laad de gegevens en open een werkblad. Maak een nieuwe tabel en voeg dit veld toe als dimensie: due_date.
Om het early_repayment_period-veld te maken, maakt u de volgende meting:
=daystart(due_date,-7,7/24)
Om het late_penalty_period-veld te maken, maakt u de volgende meting:
=daystart(due_date,14,7/24)
Resultatentabel
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/15/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
De waarden van de nieuwe velden hebben de TimestampFormat M/D/YYYY h:mm:ss[.fff] TT. Omdat de daystart()-functie is gebruikt, komen de tijdstempelwaarden allemaal overeen met de eerste milliseconde van de dag.
De vroege betaalperiode-waarden zijn zeven dagen vóór de vervaldatum, omdat het tweede argument dat in de daystart()-functie is doorgegeven, negatief was.
De late betaalperiode-waarden zijn veertien dagen na de vervaldatum, omdat het tweede argument dat in de daystart()-functie is doorgegeven, positief was.
De datums hebben een tijdstempel van 7:00 AM, omdat de waarde van het derde argument dat in de daystart()-functie, day_start, is doorgegeven, 7/24 was.
Was deze pagina nuttig?
Als u problemen ervaart op deze pagina of de inhoud onjuist is – een typfout, een ontbrekende stap of een technische fout – laat het ons weten zodat we dit kunnen verbeteren!