Si bien considero a informix como un buen motor de base de datos, ciertas cosas en las consultas no estan del todo bien documentada, por ej: las fechas.
El problema en particular que tube fue resrando meses. La solución es esta:
SELECT (TODAY) - 3 UNITS MONTH
FROM tabla
(la palabra TODAY significa la fecha actual .. la misma puede ser cambiada por cualquier fecha, se deben untilizar comillas simples en tal caso)
yo solia solucionarlo de esta manera
SELECT registros
FROM tabla
WHERE
month(fecha)=month(TODAY-90)
pero dependiendo de la situación puede dar errores muy grandes la otra manera que es la que solia utilizar es manejar la consulta con un BETWEEN y resolver las fechas con otro lenguaje que genere la consulta ya sea php, perl o cualquier otro por ej:
//datos pasados como parámetro
$mes=$_GET['mes'];
$anio=$_GET['anio'];
for ($t=1;$t<=3;$t++)
{
if ($mes<=1)
{
$mes=12;
$anio--;
}
else
$mes--;
}
$sql = "
SELECT campos
FROM tabla
WHERE
fecha BETWEEN date('01/$mes/$anio') AND date('01/$_GET[mes]/$_GET[anio]')
";
en el caso que se quiera entre la fecha del principio de un mes y del final de otro la solución sería por ej:
SELECT campos
WHERE
campo BETWEEN MDY(6,1,2007) AND MDY(6+1,1,2007) -1 //MDY es una función para armar datos de tipo date
FROM tabla
lo que estoy haciendo es obtener el último día del mes sumando un mes y restandole un día.
Espero que les sirva. Si notan algún error o tienen alguna situación particular por favor avisenme. Gracias.
Slds