# inmonthstodate Skript- och diagramfunktion

Med den här funktionen får vi reda på om en tidsmarkör finns inom delen av månaden, tvåmånadersperioden, kvartalet, fyramånadersperioden eller halvåret fram till och inklusive den sista millisekunden av `base_date`. Det går även att se om tidsmarkören finns inom en föregående eller senare tidsperiod.

Syntax:

InMonths (n\_months, timestamp, base\_date, period\_no[, first\_month\_of\_year ])

Returnerad datatyp: Booleansk

Diagram för `inmonthstodate`-funktionen.

Diagram för `inmonthstodate`-funktionen.

Diagram för `inmonthstodate`inmonthstodate-funktionen. ![Diagram som visar hur inmonthstodate-funktionen kan användas för att identifiera om en tidsmarkör ligger innanför eller utanför ett inställt tidssegment.](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-diagram1.png)

Argument

| Argument | Beskrivning |
| --- | --- |
| n\_months | Antalet månader som definierar perioden. Ett heltal eller uttryck vars resultat blir ett heltal som ska vara antingen: 1 (motsvaras av inmonth()-funktionen), 2 (tvåmånadersperiod), 3 (motsvaras av inquarter()-funktionen), 4 (fyramånadersperiod) eller 6 (halvår). |
| timestamp | Det datum du vill jämföra mot base\_date. |
| base\_date | Datum som används för att utvärdera perioden. |
| period\_no | Periodens startpunkt kan flyttas med period\_no, ett heltal, eller ett uttryck som resulterar i ett heltal, där värdet 0 anger den period som innehåller base\_date. Negativa värden i period\_no anger föregående perioder och positiva värden anger efterföljande perioder. |
| first\_month\_of\_year | Om du vill arbeta med (budget)år som inte börjar i januari kan du ange ett värde mellan 2 och 12 i first\_month\_of\_year. |

I `inmonthstodate()`-funktionen fungerar `base_date` som slutpunkt för det aktuella årssegmentet som det ingår i.

Om året exempelvis delas upp i tredjedelssegment, och `base_date` var 15 maj skulle alla tidsmarkörer mellan början av januari och slutet av april returnera det booleska resultatet FALSE. Datum mellan 1 maj och 15 maj skulle returnera TRUE. Resten av året skulle returnera FALSE.

Diagram för det booleska resultatintervallet från `inmonthstodate`-funktionen.

Diagram för det booleska resultatintervallet från `inmonthstodate`-funktionen.

Diagram för det booleska resultatintervallet från `inmonthstodate`inmonthstodate-funktionen. ![Diagram för intervallet över booleska resultat från inmonthstodate-funktionen.](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-diagram2.png)

Följande segment av året är tillgängliga i funktionen som `n_month`-argument.

`n_month`n\_month-argument

| Period | Antal månader |
| --- | --- |
| månad | 1 |
| två månader | 2 |
| kvartal | 3 |
| tertial | 4 |
| halvår | 6 |

När ska du använda inmonthstodate

Funktionen `inmonthstodate()` returnerar ett booleskt resultat. Vanligtvis används denna typ av funktion som ett villkor i en `if expression`. Genom att använda `inmonthstodate()`-funktionen kan du välja den period som du vill utvärdera. Exempelvis, tillhandahålla en indatavariabel som låter användaren identifiera de produkter som tillverkats under en månad, ett kvartal eller ett halvår i en viss period, fram till ett visst datum.

## Lokala inställningar

Om inget annat anges använder exemplen i detta ämne följande datumformat: MM/DD/YYYY. 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. Mer information finns i [Ändra regioninställningar för applikationer och skript](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/Apps/regional-settings-in-apps.htm).

Standardinställningar för region i applikationer baseras på användarprofilen. Dessa regionala formatinställningar är inte relaterade till språket som visas i Qlik Cloud användargränssnittet. Qlik Cloud kommer att visas på samma språk som webbläsaren du använder.

Om du är en applikationsskapare kan du ange standardregionen för applikationer du skapar. Mer information finns i [Ställa in önskade regioninställningar för att skapa appar och skript i Qlik Cloud-analys](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Sense_Hub/UserInterface/Languages.htm#Setting).

Exempel på funktioner

| Exempel | Resultat |
| --- | --- |
| `inmonthstodate(4, '01/25/2013', '04/25/2013',<br>0)` | Returnerar True, eftersom värdet för timestamp, 01/25/2013, befinner sig inom fyramånadersperioden 01/01/2013 till slutet av 04/25/2013, där värdet för base\_date, 04/25/2013 finns. |
| `inmonthstodate(4, '04/26/2013', '04/25/2006',<br>0)` | Returnerar False, eftersom 04/26/2013 är utanför samma period som i förra exemplet. |
| `inmonthstodate(4, '09/25/2005', '02/01/2006',<br>-1)` | Returnerar True, eftersom värdet för period\_no, -1 flyttar sökperioden bakåt en period på fyra månader (värdet för n-months), vilket innebär att sökperioden är 01/09/2005 till 02/01/2006. |
| `inmonthstodate(4, '04/25/2006', '06/01/2006',<br>0, 3)` | Returnerar True eftersom värdet för first\_month\_of\_year är angett till 3, vilket innebär att sökperioden är 03/01/2006 till 06/01/2006 i stället för 05/01/2006 till 06/01/2006. |

## Exempel 1 – inga ytterligare argument

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

#### Laddningsskript och resultat

Översikt

Öppna dataladdningsredigeraren och lägg till laddningsskriptet nedan i ett nytt delavsnitt.

Laddningsskriptet innehåller:

* En datauppsättning som innehåller transaktioner för 2022 som laddas i en tabell som heter `Transactions`.

* Ett datumfält i systemvariabeln `DateFormat` i formatet `(MM/DD/YYYY)`.

* En föregående LOAD-sats som innehåller följande:

  * `inmonthstodate()`-funktionen som är inställt som fältet `in_months_to_date`. Detta avgör vilka transaktioner som ägde rum under kvartalet fram till den 15 maj 2022.

Laddningsskript

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
    *, 
    inmonthstodate(3,date,'05/15/2022', 0) as in_months_to_date 
    ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'1/19/2022',37.23 
8189,'1/7/2022',17.17 
8190,'2/28/2022',88.27 
8191,'2/5/2022',57.42 
8192,'3/16/2022',53.80 
8193,'4/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/16/2022',87.21 
8196,'6/15/2022',95.93 
8197,'6/26/2022',45.89 
8198,'7/9/2022',36.23 
8199,'7/22/2022',25.66 
8200,'7/23/2022',82.77 
8201,'7/27/2022',69.98 
8202,'8/2/2022',76.11 
8203,'8/8/2022',25.12 
8204,'8/19/2022',46.23 
8205,'9/26/2022',84.21 
8206,'10/14/2022',96.24 
8207,'10/29/2022',67.67 
]; 
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `date`
* `in_months_to_date`

Resultattabell

| datum | in\_months\_to\_date |
| --- | --- |
| 1/7/2022 | 0 |
| 1/19/2022 | 0 |
| 2/5/2022 | 0 |
| 2/28/2022 | 0 |
| 3/16/2022 | 0 |
| 4/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/16/2022 | 0 |
| 6/15/2022 | 0 |
| 6/26/2022 | 0 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

`in_months_to_date`-fältet skapas i föregående LOAD-sats med hjälp av `inmonthstodate()`-funktionen.

Det första argumentet som tillhandahålls är `3`, som delar upp året i kvartalssegment. Det andra argumentet anger vilket fält som utvärderas. Det tredje argumentet är ett hårdkodat datum för den 15 maj, vilket är `base_date` som definierar slutgränsen för det segmentet. Ett `period_no` på `0` är det sista argumentet.

Diagram för `inmonthstodate`-funktionen utan ytterligare argument

Diagram för `inmonthstodate`-funktionen utan ytterligare argument

Diagram för `inmonthstodate`inmonthstodate-funktionen utan ytterligare argument ![Diagram som visar det transaktionsintervall som identifierats som TRUE av inmonthstodate-funktionen.](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-diagram2.png)

Alla transaktioner som sker mellan 1 april och 15 maj returnerar det booleska resultatet TRUE. Transaktionsdatum utanför denna period returnerar FALSE.

## Exampel 2 – period\_no

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

#### Laddningsskript och resultat

Översikt

Samma datauppsättning och scenario som det första exemplet används.

Men i det här exemplet är uppgiften att skapa ett fält, `previous_qtr_to_date`, som avgör huruvida transaktionerna ägde rum ett kvartal före 15 maj.

Laddningsskript

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
    *, 
    inmonthstodate(3,date,'05/15/2022', -1) as previous_qtr_to_date 
    ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'1/19/2022',37.23 
8189,'1/7/2022',17.17 
8190,'2/28/2022',88.27 
8191,'2/5/2022',57.42 
8192,'3/16/2022',53.80 
8193,'4/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/16/2022',87.21 
8196,'6/15/2022',95.93 
8197,'6/26/2022',45.89 
8198,'7/9/2022',36.23 
8199,'7/22/2022',25.66 
8200,'7/23/2022',82.77 
8201,'7/27/2022',69.98 
8202,'8/2/2022',76.11 
8203,'8/8/2022',25.12 
8204,'8/19/2022',46.23 
8205,'9/26/2022',84.21 
8206,'10/14/2022',96.24 
8207,'10/29/2022',67.67 
]; 
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `date`

* `previous_qtr_to_date`

Resultattabell

| datum | previous\_qtr\_to\_date |
| --- | --- |
| 1/7/2022 | -1 |
| 1/19/2022 | -1 |
| 2/5/2022 | -1 |
| 2/28/2022 | 0 |
| 3/16/2022 | 0 |
| 4/1/2022 | 0 |
| 5/7/2022 | 0 |
| 5/16/2022 | 0 |
| 6/15/2022 | 0 |
| 6/26/2022 | 0 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

Genom att använda `-1` som `period_no`-argument i `inmonthstodate()`-funktionen skiftar funktionerna gränserna för segmentet i jämförelseåret med ett kvartal.

15 maj infaller under årets andra kvartal och därför motsvarar segmentet initialt mellan 1 april och 15 maj. `period_no`-argumentet förskjuter det här segmentet tre månader bakåt. Datumgränserna blir 1 januari till 15 februari.

Diagram för `inmonthstodate`-funktionen med period\_no inställt till -1.

Diagram för `inmonthstodate`-funktionen med period\_no inställt till -1.

Diagram för `inmonthstodate`inmonthstodate-funktionen med period\_no inställt till -1. ![Diagram som visar transaktionsintervallet med period_no inställt till -1.](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-example2-diagram.png)

Därför kommer alla transaktioner som sker mellan 1 januari och 15 februari att returnera ett booleskt resultat som är TRUE.

## Exempel 3 – first\_month\_of\_year

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

#### Laddningsskript och resultat

Översikt

Samma datauppsättning och scenario som det första exemplet används.

I det här exemplet är organisationspolicyn att mars är den första månaden i räkenskapsåret.

Skapa ett fält, `in_months_to_date`, som bestämmer vilka transaktioner som ägde rum under samma kvartal fram till den 15 maj 2022.

Laddningsskript

```
SET DateFormat='MM/DD/YYYY'; 
						
Transactions: 
    Load 
    *, 
    inmonthstodate(3,date,'05/15/2022', 0,3) as in_months_to_date 
    ; 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'1/19/2022',37.23 
8189,'1/7/2022',17.17 
8190,'2/28/2022',88.27 
8191,'2/5/2022',57.42 
8192,'3/16/2022',53.80 
8193,'4/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/16/2022',87.21 
8196,'6/15/2022',95.93 
8197,'6/26/2022',45.89 
8198,'7/9/2022',36.23 
8199,'7/22/2022',25.66 
8200,'7/23/2022',82.77 
8201,'7/27/2022',69.98 
8202,'8/2/2022',76.11 
8203,'8/8/2022',25.12 
8204,'8/19/2022',46.23 
8205,'9/26/2022',84.21 
8206,'10/14/2022',96.24 
8207,'10/29/2022',67.67 
]; 
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till dessa fält som dimensioner:

* `date`

* `in_months_to_date`

Resultattabell

| datum | previous\_qtr\_to\_date |
| --- | --- |
| 1/7/2022 | 0 |
| 1/19/2022 | 0 |
| 2/5/2022 | 0 |
| 2/28/2022 | 0 |
| 3/16/2022 | -1 |
| 4/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/16/2022 | 0 |
| 6/15/2022 | 0 |
| 6/26/2022 | 0 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

Genom att använda `3` som `first_month_of_year`-argument i `inmonthstodate()`-funktionen startar funktionen året den 1 mars och delar sedan upp året i kvartal baserat på det första tillhandahållna argumentet. Därför är kvartalssegmenten:

* mar-maj

* jun-aug

* sep-nov

* dec-feb

`base_date` för 15 maj segmenterar då kvartalet mar-maj genom att ställa in slutdatum på 15 maj.

Diagram för `inmonthstodate`-funktionen med mars inställt som årets första månad.

Diagram för `inmonthstodate`-funktionen med mars inställt som årets första månad.

Diagram för `inmonthstodate`inmonthstodate-funktionen med mars inställt som årets första månad. ![Diagrammet visar transaktionsintervallet med mars inställt som årets första månad.](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-example3-diagram.png)

Därför kommer alla transaktioner som sker mellan 1 mars och 15 maj att returnera det booleska resultatet TRUE, och transaktioner med datum utanför dessa gränser kommer att returnera värdet FALSE.

## Exampel 4 – diagramexampel

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

#### Laddningsskript och diagramuttryck

Översikt

Samma datauppsättning och scenario som det första exemplet används.

I det här exemplet är datauppsättningen oförändrad och har lästs in i applikationen. Uppgiften är att skapa en beräkning som avgör om transaktioner ägde rum under samma kvartal som den 15 maj som ett mått i ett diagram i applikationen.

Laddningsskript

```
SET DateFormat='MM/DD/YYYY'; 
						 
Transactions: 
Load 
* 
Inline  
[ 
id,date,amount 
8188,'1/19/2022',37.23 
8189,'1/7/2022',17.17 
8190,'2/28/2022',88.27 
8191,'2/5/2022',57.42 
8192,'3/16/2022',53.80 
8193,'4/1/2022',82.06 
8194,'5/7/2022',40.39 
8195,'5/16/2022',87.21 
8196,'6/15/2022',95.93 
8197,'6/26/2022',45.89 
8198,'7/9/2022',36.23 
8199,'7/22/2022',25.66 
8200,'7/23/2022',82.77 
8201,'7/27/2022',69.98 
8202,'8/2/2022',76.11 
8203,'8/8/2022',25.12 
8204,'8/19/2022',46.23 
8205,'9/26/2022',84.21 
8206,'10/14/2022',96.24 
8207,'10/29/2022',67.67 
]; 
```

Resultat

Ladda data och öppna ett ark. Skapa en ny tabell och lägg till det här fältet som en dimension:

`date`

För att beräkna om transaktioner ägde rum under samma kvartal som 15 maj skapar du följande mått:

`=inmonthstodate(3,date,'05/15/2022', 0)` ` `

Resultattabell

| datum | =inmonthstodate(3,date,'05/15/2022', 0) |
| --- | --- |
| 1/7/2022 | 0 |
| 1/19/2022 | 0 |
| 2/5/2022 | 0 |
| 2/28/2022 | 0 |
| 3/16/2022 | 0 |
| 4/1/2022 | -1 |
| 5/7/2022 | -1 |
| 5/16/2022 | 0 |
| 6/15/2022 | 0 |
| 6/26/2022 | 0 |
| 7/9/2022 | 0 |
| 7/22/2022 | 0 |
| 7/23/2022 | 0 |
| 7/27/2022 | 0 |
| 8/2/2022 | 0 |
| 8/8/2022 | 0 |
| 8/19/2022 | 0 |
| 9/26/2022 | 0 |
| 10/14/2022 | 0 |
| 10/29/2022 | 0 |

`‘in_months_to_date`-måttet skapas i diagrammet med hjälp av `inmonthstodate()`-funktionen.

Det första argumentet som tillhandahålls är `3`, som delar upp året i kvartalssegment. Det andra argumentet anger vilket fält som utvärderas. Det tredje argumentet är ett hårdkodat datum, 15 maj, vilket är `base_date` som definierar slutgränsen för det segmentet. Ett `period_no` på `0` är det sista argumentet.

Diagrammet över `inmonthstodate`-funktionen med kvartalssegment.

Diagrammet över `inmonthstodate`-funktionen med kvartalssegment.

Diagrammet över `inmonthstodate`inmonthstodate-funktionen med kvartalssegment. ![Diagram som visar transaktionsintervallet som returnerar det booleska värdet TRUE.](https://help.qlik.com/sv-SE/cloud-services/Subsystems/Hub/Content/Resources/Images/scripting-functions-inmonthstodate-example4-diagram.png)

Alla transaktioner som sker mellan 1 april och 15 maj returnerar det booleska resultatet TRUE. Transaktionsdatum utanför detta segment returnerar FALSE.

## Exempel 5 – Scenario

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

#### Laddningsskript och resultat

Översikt

I det här exemplet laddas en datauppsättning i en tabell som heter Sales. Tabellen innehåller följande fält:

* Produkt-ID

* Produkttyp

* Försäljningsdatum

* Försäljningspris

Slutanvändaren vill ha ett diagram som visar försäljningen av produkter under perioden fram till 24 december 2022, efter produkttyp. Användaren vill kunna definiera den här periodens längd.

Laddningsskript

```
SET vPeriod = 1; 

Products: 
Load 
* 
Inline  
[ 
product_id,product_type,sales_date,sales_price 
8188,product A,'9/19/2022',37.23 
8189,product D,'10/27/2022',17.17 
8190,product C,'10/30/2022',88.27 
8191,product B,'10/31/2022',57.42 
8192,product D,'11/16/2022',53.80 
8193,product D,'11/28/2022',82.06 
8194,product A,'12/2/2022',40.39 
8195,product B,'12/5/2022',87.21 
8196,product C,'12/15/2022',95.93 
8197,product B,'12/16/2022',45.89 
8198,product C,'12/19/2022',36.23 
8199,product D,'12/22/2022',25.66 
8200,product D,'12/23/2022',82.77 
8201,product A,'12/24/2022',69.98 
8202,product A,'12/24/2022',76.11 
8203,product B,'12/26/2022',25.12 
8204,product B,'12/27/2022',46.23 
8205,product B,'12/27/2022',84.21 
8206,product C,'12/28/2022',96.24 
8207,product D,'12/29/2022',67.67 
]; 
```

Resultat

Ladda data och öppna ett ark.

I början av laddningsskriptet har en variabel, vPeriod, skapats som är kopplad till variabelinmatningskontrollen.

Gör följande:

1. I resurspanelen klickar du på Diagram.

2. Under Dashboardobjekt drar du en Variabelinmatning till arket.

3. Ange en titel för diagrammet.

4. Under Variabel väljer du vPeriod som namn och ställer in objektet så att det visas som en rullgardinsmeny.

5. Under Värden klickar du på Dynamiska värden. Ange följande:

   ```
   ='1~month|2~bi-month|3~quarter|4~tertial|6~half-year'.
   ```

6. Lägg till en ny tabell i arket.

7. I egenskapspanelen under Data lägger du till product\_type som en dimension.

8. Lägg till följande uttryck som ett mått:

   =sum(if(inmonthstodate($(vPeriod),sales\_date,makedate(2022,12,24),0),sales\_price,0))

9. Ange måttens Nummerformatering till Pengar.

Resultattabell

| product\_type | =sum(if(inmonthstodate($(vPeriod),sales\_date,makedate(2022,12,24),0),sales\_price,0)) |
| --- | --- |
| produkt A | $186.48 |
| produkt B | $190.52 |
| produkt C | $220.43 |
| produkt D | $261.46 |

inmonthstodate()-funktionen använder användarindata som sitt argument för att definiera storleken på startsegmentet för året.

Funktionen skickar försäljningsdatumet för var och en av produkterna som inmonthstodate()-funktionens andra argument. Genom att använda 24 december som tredje argument i inmonthstodate()-funktionen returnerar produkter med försäljningsdatum som inträffar under den definierade perioden fram till och inklusive 24 december returnerar det booleska värdet TRUE. Summafunktionen lägger till försäljningen av produkterna.