Denna funktion returnerar ett värde som motsvarar en tidsmarkör med den första millisekunden av den dag som ingår i argumentet time. Det förvalda utdataformatet blir det TimestampFormat som har definierats i skriptet.
Syntax:
DayStart(time[, [period_no[, day_start]])
Returnerad datatyp: dual
Argument
Argument
Beskrivning
time
Tidsmarkören som ska evalueras.
period_no
period_no är ett heltal, eller ett uttryck som resulterar i ett heltal, där värdet 0 anger den dag som innehåller time. Negativa värden i period_no anger föregående dagar och positiva värden anger efterföljande dagar.
day_start
Om du vill ange att dagar inte startar vid midnatt anger du en startpunkt som delar av en dag i day_start. Till exempel betecknar 0,125 03.00.
Med andra ord, för att skapa förskjutningen ska du dividera starttiden med 24 timmar. Till exempel, för en dag som börjar klockan 7.00, använd bråket 7/24.
Användning
daystart()-funktionen används vanligtvis som en del av ett uttryck när användaren vill att beräkningen ska använda den del av dagen som har förflutit hittills. Det kan exempelvis användas för att beräkna de totala lönerna som de anställda har tjänat hittills under dagen.
I de här exemplen används tidsmarkörsformatet 'M/D/YYYY h:mm:ss[.fff] TT'. Tidsmarkörsformatet anges i SET TimeStamp-satsen längst upp i dataladdningsskriptet. Ändra formatet i exemplen så att det passar dina krav.
Exempel på funktioner
Exempel
Resultat
daystart('01/25/2013 4:45:00 PM')
Returnerar 1/25/2013 12:00:00 AM.
daystart('1/25/2013 4:45:00 PM', -1)
Returnerar 1/24/2013 12:00:00 AM.
daystart('1/25/2013 16:45:00',0,0.5
)
Returnerar 1/25/2013 12:00:00 PM.
Lokala inställningar
Om inget annat anges använder exemplen i detta ämne följande datumformat: MM/DD/ÅÅÅÅ. Datumformatet anges i SET DateFormat-satsen i datainläsningsskriptet. Förvald datumformatering kan vara annorlunda i ditt system, på grund av dina regionala inställningar och andra faktorer. Du kan ändra formaten i exemplen nedan så att det passar dina krav. Eller så kan du ändra formaten i ditt laddningsskript så att de matchar dessa exempel.
Standardregionalinställningar i appar baseras på de regionala systeminställningarna för datorn eller servern där Qlik Sense är installerad. Om Qlik Sense-servern du ansluter till är inställd på Sverige så kommer skriptredigeraren använda regionala inställningar för Sverige för datum, tid och valuta. Dessa regionala formatinställningar är inte relaterade till språket som visas i Qlik Sense användargränssnittet. Qlik Sense kommer att visas på samma språk som webbläsaren du använder.
Exempel 1 – enkelt exempel
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
En enkel datauppsättning med en lista med datum som laddas till en tabell med namnet Calendar.
En föregående laddning som skapar ett ytterligare fält benämnt SOD_timestamp, med användning av daystart()-funktionen.
Utöver datumet ges funktionen inga fler parametrar.
Laddningsskript
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
];
Resultat
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
date
SOD_timestamp
Resultattabell
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
Som framgår av tabellen ovan genereras tidsmarkören för dagens slut för varje datum i vår datauppsättning. Tidsmarkören har formatet för systemvariabeln TimestampFormat M/D/YYYY h:mm:ss[.fff] TT.
Exempel 2 – period_no
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
En datauppsättning med en lista med parkeringsböter som laddas till en tabell med namnet Fines. Datauppsättningen innehåller följande fält:
id
due_date
number_plate
amount
En föregående laddning som använder daystart()-funktionen och som tillhandahåller alla tre parametrarna: time, period_no och day_start. Den föregående laddningen skapar de två följande nya datumfälten:
Ett early_repayment_period-datumfält som börjar sju dagar innan inbetalningen ska göras.
Ett late_penalty_period-datumfält som börjar 14 dagar efter inbetalningen ska göras.
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
due_date
early_repayment_period
late_penalty_period
Resultattabell
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
Värdena på de nya fältena finns i TimestampFormat M/DD/YYYY tt. Eftersom daystart()-funktionen användes är tidsmarkörerna den första millisekunden av dagen.
Värdena för förtidsåterbetalningsperioden är sju dagar före datumet då inbetalningen ska göras, eftersom det andra argumentet som skickats i daystart()-funktionen är negativt.
Värdena för den försenade återbetalningsperioden är 14 dagar efter datumet då inbetalningen ska göras, eftersom det andra argumentet som skickats i daystart()-funktionen är negativt.
Exempel 3 – day_start
Översikt
Öppn skriptredigeraren och lägg till laddningsskriptet nedan till en ny flik.
Laddningsskriptet innehåller:
Samma datauppsättning och scenario som i föregående exempel.
Samma föregående laddning som i föregående exempel.
I det här exemplet ställer vi in arbetsdagen till att börja och sluta 7.00 varje dag.
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:
due_date
early_repayment_period
late_penalty_period
Resultattabell
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
Datumen har nu tidsmarkören 7.00 eftersom värdet på day_start-argumentet som skickades till funktionen daystart() var 7/24. Detta ställer in början av dagen till 7.00.
Eftersom due_date-fältet inte har en tidsstämpel behandlas det som 0.00 som därför fortfarande räknas till den föregående dagen, eftersom dagarna börjar och slutar 7.00. Förtidsåterbetalningsperioden för en bot som förfaller 11 februari börjar därför 3 februari 7.00.
Exempel 4 – Diagramobjektexempel
Översikt
Öppna skriptredigeraren och lägg till laddningsskriptet nedan i en ny flik.
I det här exemplet används samma datauppsättning och scenario som i föregående exempel.
Men det är bara den ursprungliga Fines-tabellen som laddas i programmet, med de två ytterligare förfallodatumen som beräknas i ett diagramobjekt.
Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension: due_date.
För att skapa fältet early_repayment_period skapar du följande mått:
=daystart(due_date,-7,7/24)
För att skapa fältet late_penalty_period skapar du följande mått:
=daystart(due_date,14,7/24)
Resultattabell
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
Värdena på de nya fältena finns i TimestampFormat M/D/YYYY h:mm:ss[.fff] TT. Eftersom daystart()-funktionen användes motsvarar tidsmarkörerna den första millisekunden av dagen.
Värdena för förtidsåterbetalningsperioden är sju dagar före datumet då inbetalningen ska göras, eftersom det andra argumentet som skickades i daystart()-funktionen var negativt.
Värdena för den försenade återbetalningsperioden är 14 dagar efter datumet då inbetalningen ska göras, eftersom det andra argumentet som skickades i daystart()-funktionen var positivt.
Datumen har en tidsmarkör på 7.00 eftersom värdet på det tredje argumentet som skickades till daystart()-funktionen, day_start var 7/24.
Var den här sidan till hjälp för dig?
Om du hittar några fel på denna sida eller i innehållet – ett stavfel, ett steg som saknas eller ett tekniskt fel – berätta för oss så att vi kan blir bättre!