inmonthstodate - script- en grafiekfunctie
Deze functie bepaalt of een tijdstempel binnen het gedeelte van een periode van de maand, twee maanden, kwartaal, tertiaal of half jaar tot en met de laatste milliseconde van base_date valt. Het is tevens mogelijk om te bepalen of de tijdstempel binnen een voorafgaande of volgende tijdsperiode valt.
Syntaxis:
InMonths (n_months, timestamp, base_date, period_no[, first_month_of_year ])
Retourgegevenstype: Booleaanse waarde
Argumenten:
Argument | Beschrijving |
---|---|
n_months |
Het aantal maanden dat de periode definieert. Een geheel getal uit uitdrukking die wordt herleid tot een geheel getal dat een van de volgende waarden moet hebben: 1 (equivalent aan de functie inmonth()), 2 (2 maanden), 3 (equivalent aan de functie inquarter()), 4 (tertiaal) of 6 (half jaar). |
timestamp | De datum die u wilt vergelijken met base_date. |
base_date | Datum op basis waarvan de periode wordt geëvalueerd. |
period_no |
De periode kan worden verschoven met period_no, een geheel getal of een uitdrukking die wordt herleid tot een geheel getal, waarbij de waarde 0 de periode aangeeft die base_date bevat. Negatieve waarden in period_no geven voorafgaande perioden aan en positieve waarden geven volgende perioden aan. |
first_month_of_year |
Als u wilt werken met (boek)jaren die niet in januari beginnen, geeft u een waarde op tussen 2 en 12 in first_month_of_year. |
Voorbeelden en resultaten:
Deze voorbeelden gebruiken de datumopmaak DD/MM/YYYY. De datumopmaak wordt opgegeven in de opdracht SET DateFormat boven aan uw load-script. Wijzig de opmaak in de voorbeelden zodat deze in uw behoeften voorziet.
Voorbeeld 1:
inmonthstodate(4, '25/01/2013', '25/04/2013', 0)
Retourneert True. Omdat de waarde van timestamp, 25/01/2013, binnen de periode van vier maanden van 01/01/2013 tot aan het einde van 25/04/2013 ligt, waarin de waarde van base_date, 25/04/2013 ligt.
Voorbeeld 2:
inmonthstodate(4, '26/04/2013', '25/04/2006', 0)
Retourneert False. Omdat 26/04/2013 buiten dezelfde periode als het voorafgaande voorbeeld ligt.
Voorbeeld 3:
inmonthstodate(4, '25/09/2005', '01/02/2006', -1)
Retourneert True. Omdat de waarde van period_no, -1, de zoekperiode één periode van vier maanden (de waarde van n-months) terugschuift, waardoor de zoekperiode valt van 01/09/2005 t/m 01/02/2006.
Voorbeeld 4:
inmonthstodate(4, '25/04/2006', '01/06/2006', 0, 3)
Retourneert True. Omdat de waarde van first_month_of_year is ingesteld op 3, waardoor de zoekperiode valt van 01/03/2006 t/m 01/06/2006 en niet van 01/05/2006 t/m 01/06/2006.
Voorbeeld 5:
Voeg het voorbeeldscript toe aan uw document en voer dit uit. Voeg vervolgens ten minste de velden die in de resultatenkolom staan aan een werkblad in uw document toe om het resultaat te bekijken.
In dit voorbeeld wordt gecontroleerd of de factuurdatum in de tabel in het gedeelte van de periode van twee maanden valt tot en met de base_date die met vier perioden van twee maanden vooruit is geschoven (door 4 op te geven bij period_no).
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;
De resulterende tabel bevat de oorspronkelijke datums en een kolom met de retourwaarde van de functie InMonths().
De zoekperiode is 01/09/2013 t/m 15/10/2013, omdat de waarde van base_date acht maanden vooruit wordt geschoven vanaf de waarde in de functie (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) |