inmonthstodate - skript- och diagramfunktion
Senast uppdaterad: 2025-11-26
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 ])
Typ av returdata: Boolesk
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:
inmonthstodate(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 slutet på 25/04/2013, där värdet för base_date, 25/04/2013 finns.
Exempel 2:
inmonthstodate(4, '26/04/2013', '25/04/2006', 0)
Returnerar False. Eftersom 26/04/2013 är utanför samma period som i förra exemplet.
Exempel 3:
inmonthstodate(4, '25/09/2005', '01/02/2006', -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/2005 till 01/02/2006.
Exempel 4:
inmonthstodate(4, '25/04/2006', '01/06/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 01/06/2006 istället för 01/05/2006 till 01/06/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 delen av tvåmånadersperioden som sträcker sig till och innefattar base_date framflyttad fyra tvåmånadersperioder (genom att ange period_no som 4).
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 *,
InMonthsToDate(2, InvDate, '15/02/2013', 4) AS InMths2DPlus4
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/09/2013 till 15/10/2013, eftersom värdet för base_date flyttas framåt åtta månader från värdet i funktionen (15/02/2013).
| InvDate | InMths2DPlus4 |
|---|---|
| 28/03/2012 | 0 (False) |
| 10/12/2012 | 0 (False) |
| 5/2/2013 | 0 (False) |
| 31/3/2013 | 0 (False) |
| 19/5/2013 | 0 (False) |
| 15/9/2013 | -1 (True) |
| 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) |