monthsend — скрипт и функция диаграммы
Эта функция возвращает значение, соответствующее метке времени последней миллисекунды месяца, двухмесячного периода, квартала, четырехмесячного периода или полугодия, содержащих базовую дату. Также можно найти метку времени для предыдущего или последующего временного периода.
Синтаксис:
MonthsEnd(n_months, date[, period_no [, first_month_of_year]])
Тип возврата данных: двойное значение
Аргументы:
Аргумент | Описание |
---|---|
n_months | Число месяцев, обозначающее период. Целое число или выражение, определяемое по целому числу, которое должно быть одним из следующих значений: 1 (эквивалентно функции inmonth()), 2 (двухмесячный период), 3 (эквивалентно функции inquarter()), 4 (четырехмесячный период) или 6 (полугодие). |
date | Дата для вычисления. |
period_no | Период можно сместить, задав значение в поле period_no, целом числе или выражении, определяемом по целому числу, где 0 обозначает период, включающий значение, указанное в поле base_date. Отрицательные значения, заданные в поле period_no, означают предшествующие периоды, положительные — последующие. |
first_month_of_year |
Если необходимо работать с годами (финансовыми), которые начинаются не в январе, задайте значение от 2 до 12 в поле first_month_of_year. |
Примеры и результаты:
В этих примерах используется формат даты DD/ММ/YYYY. Формат даты указан в операторе SET DateFormat в верхней части скрипта загрузки. Измените формат в примерах согласно своим пожеланиям.
Пример 1:
monthsend(4, '19/07/2013')
Возвращает 31/08/2013.
Пример 2:
monthsend(4, '19/10/2013', -1)
Возвращает 31/08/2013.
Пример 3:
monthsend(4, '19/10/2013', 0, 2)
Возвращает 31/01/2014.
Поскольку началом года становится месяц 2.
Пример 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 *,
MonthsEnd(2, InvDate, 1) AS BiMthsEnd
Resident TempTable;
Drop table TempTable;
Результирующая таблица содержит исходные даты и столбец с возвращенным значением функции MonthsEnd().
InvDate | BiMthsEnd |
---|---|
28/03/2012 | 30/06/2012 |
10/12/2012 | 28/02/2013 |
5/2/2013 | 30/04/2013 |
31/3/2013 | 30/06/2013 |
19/5/2013 | 31/08/2013 |
15/9/2013 | 31/12/2013 |
11/12/2013 | 28/02/2014 |
2/3/2014 | 30/06/2014 |
14/5/2014 | 31/08/2014 |
13/6/2014 | 31/08/2014 |
7/7/2014 | 31/10/2014 |
4/8/2014 | 31/10/2014 |