# inmonthstodate — funkcja skryptu i funkcja wykresu

Ta funkcja wykrywa, czy znacznik czasu przypada w części okresu miesiąca, dwóch miesięcy, kwartału, okresu czteromiesięcznego lub półrocza do ostatniej milisekundy wartości base\_date włącznie. Można także wyszukać, czy znacznik czasu przypada w okresie poprzednim lub następnym.

Składnia:

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

**Typ zwracanych danych:** wartość logiczna

Argumenty:

Argumenty InMonthsToDate

| Argument | Opis |
| --- | --- |
| n\_months | Liczba miesięcy określająca okres. Liczba całkowita lub wyrażenie, którego wynikiem jest liczba całkowita, która musi przyjmować jedną z następujących wartości: 1 (odpowiednik funkcji inmonth()), 2 (okres dwumiesięczny), 3 (odpowiednik funkcji inquarter()), 4 (okres czteromiesięczny) lub 6 (półrocze). |
| timestamp | Data, która ma być porównana z wartością base\_date. |
| base\_date | Data używana do oceny okresu. |
| period\_no | Okres może być przesunięty o wartość period\_no — liczbę całkowitą lub wyrażenie, którego wynikiem jest liczba całkowita, gdzie wartość 0 wskazuje dzień zawierający wartość base\_date. Wartości ujemne parametru period\_no oznaczają okresy poprzednie, a wartości dodatnie — okresy następne. |
| first\_month\_of\_year | Jeśli użytkownik zamierza korzystać z lat (obrotowych), które nie zaczynają się w styczniu, powinien wskazać wartość od 2 do 12 jako parametr first\_month\_of\_year. |

Przykłady i wyniki:

W tych przykładach należy użyć formatu daty DD/MM/RRRR. Format daty jest określony w instrukcji SET DateFormat u góry skryptu ładowania. Zmień format w przykładach odpowiednio do swoich potrzeb.

Przykład 1:

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

Zwraca wartość True. Ponieważ wartość timestamp, 25/01/2013, przypada w obrębie czteromiesięcznego okresu od 01/01/2013 aż do końca 25/04/2013, który zawiera wartość base\_date, 25/04/2013.

Przykład 2:

`inmonthstodate(4, '26/04/2013', '25/04/2006',   0)`

Zwraca wartość False. Ponieważ data 26/04/2013 przypada poza tym samym okresem co poprzedni przykład.

Przykład 3:

`inmonthstodate(4, '25/09/2005', '01/02/2006',   -1)`

Zwraca wartość True. Ponieważ wartość period\_no, -1, powoduje przesunięcie okresu wyszukiwania w tył o jeden okres czterech miesięcy (wartość n-months), przez co okres wyszukiwania przypada od 01/09/2005 do 01/02/2006.

Przykład 4:

`inmonthstodate(4, '25/04/2006', '01/06/2006',   0, 3)`

Zwraca wartość True. Ponieważ wartość first\_month\_of\_year jest ustawiona na 3, przez co okres wyszukiwania przypada od 01/03/2006 do 01/06/2006, nie od 01/05/2006 do 01/06/2006.

Przykład 5:

Dodaj przykładowy skrypt do dokumentu i uruchom go. Następnie dodaj do arkusza w swoim dokumencie co najmniej pola wyszczególnione w kolumnie wyników, aby wyświetlić wynik.

W tym przykładzie sprawdzane jest, czy data faktury w tabeli przypada w części dwumiesięcznego okresu obejmującego datę base\_date przesuniętego w przód o cztery dwumiesięczne okresy (poprzez określenie period\_no jako 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;`

Otrzymana tabela zawiera pierwotne daty i kolumnę ze zwracaną wartością funkcji InMonths().

Okres wyszukiwania przypada od 01/09/2013 do 15/10/2013, ponieważ wartość base\_date jest przesunięta do przodu o osiem miesiące względem wartości w funkcji (15/02/2013).

Wyniki przykładu 5

| 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) |