# inmonths - skript- och diagramfunktion

Denna funktion hittar om en tidsstämpel hamnar inom samma månad, tvåmånadersperiod, kvartal, fyramånadersperiod eller halvår som ett basdatum. 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])

**Typ av returdata:** Boolesk

Argument:

InMonths-argument

| Argument | Beskrivning |
| --- | --- |
| n\_months | Antalet månader som definierar perioden. Ett heltal eller ett uttryck som resulterar i ett heltal som måste vara ett av följande: 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. |

Exempel och resultat:

I de här exemplen används datumformatet DD/MM/YYYY. Datumformatet anges i SET DateFormat-satsen längst upp i laddningsskriptet. Ändra formatet i exemplen så att det passar dina krav.

Exempel 1:

`inmonths(4, '25/01/2013', '25/04/2013',   0)`

Returnerar True. Eftersom värdet för timestamp, 25/01/2013, befinner sig inom fyramånadersperioden 01/01/2013 till 30/04/2013, där värdet för base\_date, 25/04/2013 finns.

Exempel 2:

`inmonths(4, '25/05/2013', '25/04/2013',   0)`

Returnerar False. Eftersom 25/05/2013 är utanför samma period som i förra exemplet.

Exempel 3:

`inmonths(4, '25/11/2012', '01/02/2013',   -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 gör sökperioden till 01/09/2012 till 31/12/2012.

Exempel 4:

`inmonths( 4, '25/05/2006', '01/03/2006',   0, 3)`

Returnerar True. Eftersom värdet för first\_month\_of\_year är angett som 3, vilket gör sökperioden till 01/03/2006 till 30/07/2006 istället för 01/01/2006 till 30/04/2006.

Exempel 5:

Lägg till exempelskriptet i dokumentet och kör det. Lägg sedan till åtminstone de fält som listas i resultatkolumnen på ett ark i dokumentet för att se resultatet.

I det här exemplet undersöker vi om faktureringsdatumet i tabellen infaller under tvåmånadersperioden som innefattar base\_date framflyttad en tvåmånadersperiod (genom att ange period\_no som 1).

`TempTable:` `LOAD RecNo() as InvID, * Inline [` `InvDate` `28/03/2012` `10/12/2012` `5/2/2013` `31/3/2013` `19/5/2013` `15/9/2013` `11/12/2013` `2/3/2014` `14/5/2014` `13/6/2014` `7/7/2014` `4/8/2014` `];` ` ` `InvoiceData:` `LOAD *,` `InMonths(2, InvDate, '11/02/2013', 1) AS InMthsPlus1` `Resident TempTable;`

`Drop table TempTable;`

Den resulterande tabellen innehåller de ursprungliga datumen och en kolumn med returvärdet för InMonths()-funktionen.

Sökperioden är 01/03/2013 till 30/04/2013, eftersom värdet för base\_date flyttas framåt två månader från värdet i funktionen (11/02/2013).

Resultat för exempel 5

| InvDate | InMthsPlus1 |
| --- | --- |
| 28/03/2012 | 0 (False) |
| 10/12/2012 | 0 (False) |
| 5/2/2013 | 0 (False) |
| 31/3/2013 | -1 (True) |
| 19/5/2013 | 0 (False) |
| 15/9/2013 | 0 (False) |
| 11/12/2013 | 0 (False) |
| 2/3/2014 | 0 (False) |
| 14/5/2014 | 0 (False) |
| 13/6/2014 | 0 (False) |
| 7/7/2014 | 0 (False) |
| 4/8/2014 | 0 (False) |