Esta función encuentra si una marca de tiempo (fecha-hora) cae dentro de la parte del período de un mes, dos meses, tres meses, cuatro meses o medio año hasta e incluido el último milisegundo de base_date. También es posible hallar si la fecha-hora cae dentro de un periodo anterior o posterior.
El número de meses que define el periodo. Un entero o expresión que devuelve un entero que debe ser uno de los siguientes: 1 (equivalente a la función inmonth()), 2 (bimestral), 3 (equivalente a la función inquarter()), 4 (terciario) o 6 (semestral).
timestamp
La fecha que desea comparar con base_date.
base_date
La fecha que se utiliza para evaluar el periodo.
period_no
El período se puede desplazar mediante period_no, un entero o una expresión que devuelve un entero, donde el valor 0 indica el período que contiene a base_date. Los valores negativos en period_no indican períodos precedentes y los valores positivos indican períodos subsiguientes.
first_month_of_year
Si desea trabajar con años (fiscales) que no comiencen en enero, indique un valor entre 2 y 12 en first_month_of_year.
Estos ejemplos utilizan el formato de fecha DD/MM/YYYY. El formato de fecha se especifica en la sentencia SET DateFormat en la parte superior de su script de carga de datos. Cambie el formato en los ejemplos según se ajuste a sus necesidades.
Ejemplos de script
Ejemplo
Resultado
inmonthstodate(4, '25/01/2013', '25/04/2013', 0)
Devuelve True. Porque el valor de timestamp, 25/01/2013, cae dentro del período de cuatro meses, del 01/01/2013 hasta el final de 25/04/2013, en el que se encuentra el valor de base_date, 25/04/2013.
inmonthstodate(4, '26/04/2013', '25/04/2006', 0)
Devuelve False. Porque 26/04/2013 está fuera del mismo periodo que el ejemplo anterior.
inmonthstodate(4, '25/09/2005', '01/02/2006', -1)
Devuelve True. Porque el valor de period_no, -1, desplaza el período de búsqueda un período de cuatro meses atrás (el valor de n-months), lo que hace que el período de búsqueda sea de 01/09/2005 a 01/02/2006.
Devuelve True. Porque el valor de first_month_of_year está fijado en 3, lo que hace que el período de búsqueda sea de 01/03/2006 a 01/06/2006 en vez de 01/05/2006 a 01/06/2006.
Example:
Agregue el script de ejemplo en su app y ejecútelo. Luego, agregue los campos enumerados en la columna de resultados a una hoja de su app para ver el resultado.
Este ejemplo comprueba si la fecha de la factura de la tabla cae en la parte del período de dos meses hasta e incluyendo a base_date desplazada hacia delante en cuatro períodos de dos meses (especificando period_no como 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;
La tabla resultante contiene las fechas originales y una columna con el valor de retorno de la función InMonths().
El período de búsqueda es de 01/09/2013 a 15/10/2013, porque el valor de base_date se desplaza hacia adelante ocho meses desde el valor en la función (15/02/2013).