inmonths - kod ve grafik fonksiyonu
Bu fonksiyon bir zaman damgasının bir temel tarih ile aynı aylık, iki aylık, üç aylık, dört aylık veya yarı yıllık dönem içinde mi kaldığını bulur. Zaman damgasının önceki veya sonraki bir zaman dönemine denk gelip gelmediğini bulmak da mümkündür.
Söz Dizimi:
InMonths(n_months, timestamp, base_date, period_no [, first_month_of_year])
Dönüş veri türü: Boole
Bağımsız Değişkenler:
Bağımsız Değişken | Açıklama |
---|---|
n_months |
Dönemi tanımlayan ayların sayısı. Şunlardan biri olması gereken bir tamsayıya çözümlenen bir tamsayı ya da ifade: 1 (inmonth() fonksiyonunun eşdeğeri), 2 (iki aylık), 3 (inquarter() fonksiyonunun eşdeğeri), 4 (dört aylık dönem) veya 6 (yarı yıl). |
timestamp | base_date ile karşılaştırmak istediğiniz tarih. |
base_date | Dönemi değerlendirmek için kullanılan tarih. |
period_no |
Dönem period_no ile kaydırılabilir. Bu değer bir tamsayı ya da tamsayıya çözümlenen bir ifadedir ve burada 0 değeri base_date içeren dönemi belirtir. period_no içindeki negatif değerler önceki dönemleri; pozitif değerler ise sonraki dönemleri gösterir. |
first_month_of_year |
Ocak'ta başlamayan (mali) yıllarla çalışmak istiyorsanız, first_month_of_year içinde 2 ile 12 arasında bir değer belirtin. |
Örnekler ve sonuçlar:
Bu örneklerde GG/AA/YYYY tarih biçimi kullanılmaktadır. Tarih biçimi, kod dosyanızın en başında SET DateFormat deyimi içinde belirtilir. Örneklerdeki biçimi gereksinimlerinize uyacak şekilde değiştirin.
Örnek 1:
inmonths(4, '25/01/2013', '25/04/2013', 0)
True döndürür. Çünkü timestamp değeri (25/01/2013) 01/01/2013 ile 30/04/2013 tarihleri arasındaki dört aylık dönem içinde yer almaktadır ve base_date değeri 25/04/2013 de bu dönem içindedir.
Örnek 2:
inmonths(4, '25/05/2013', '25/04/2013', 0)
False döndürür. Çünkü 25/05/2013 yukarıdaki örnekte verilen aynı dönemin dışındadır.
Örnek 3:
inmonths(4, '25/11/2012', '01/02/2013', -1 )
True döndürür. Çünkü period_no için -1 değeri, arama dönemini dört aylık bir dönem kadar (n-months değeri) geriye kaydırır ve bu da arama dönemini 01/09/2012 ile 31/12/2012. tarihleri arasına getirir.
Örnek 4:
inmonths( 4, '25/05/2006', '01/03/2006', 0, 3)
True döndürür. Çünkü first_month_of_year değeri 3 olarak ayarlanmıştır ve bu da arama dönemini 01/03/2006 ile 30/07/2006 tarihleri arasına getirir (01/01/2006 ila 30/04/2006 aralığı yerine).
Örnek 5:
Örnek kodu belgenize ekleyin ve çalıştırın. Ardından, sonucu görmek için belgenizdeki bir sayfaya en azından sonuçlar sütununda listelenen alanları ekleyin.
Bu örnek, tablodaki fatura tarihinin, iki aylık bir dönem kadar kaydırılan (period_no değerinin 1 olarak belirtilmesiyle) base_date değerinin içinde bulunduğu iki aylık döneme denk gelip gelmediğini kontrol eder.
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;
Sonuçta ortaya çıkan tabloda orijinal tarihler ve InMonths() fonksiyonunun döndürdüğü değeri içeren bir sütun yer alır.
Arama dönemi 01/03/2013 ile 30/04/2013 tarihleri arasındadır; çünkü base_date değeri fonksiyondaki değerden (11/02/2013) iki ay ileri kaydırılmaktadır.
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) |