¿Cómo hacer un bucle al consultar la fecha?Hola a todos
Estoy intentando consultar la base de datos usando JMP. En mi consulta, cambio manualmente el valor de dateNow del día 1 al 30 y luego ejecuto el script. Pero necesitaba crear otro que se repitiera a lo largo de los días.
¿Cómo puedo crear un bucle que consulte todas las fechas desde julio de 2023 hasta enero de 2024?
dateNow = "01/11/2024";
dt = Open Database( "DSN=databasename;UID=root;PWD=admin;APP=JMP;DATABASE=dbSample").
"select distinct name, age, sex, address
from db1
where date between '" || dateNow || " 00:00:00 AM' and '" || dateNow || " 11:59:59 PM'",
"raw" );
Automatización y secuencias de comandosRe: ¿Cómo hacer un bucle al consultar la fecha?Aquí está mi solución.
Names Default To Here( 1 );
For( theDate = Informat( "01/07/2023", "d/m/y" ), theDate <= Informat( "31/1/2024", "d/m/y" ),
theDate = theDate + In Days( 1 ),
// Create the dateNow variable from the index variable "theDate"
dateNow = Format( theDate, "d/m/y" );
dt = Open Database( "DSN=databasename;UID=root;PWD=admin;APP=JMP;DATABASE=dbSample").
"select distinct name, age, sex, address
from db1
where date between '" || dateNow || " 00:00:00 AM' and '" || dateNow || " 11:59:59 PM'",
"raw" );
);
Re: ¿Cómo hacer un bucle al consultar la fecha?Dependiendo de su SQL, es posible que pueda deducir el índice de la fecha (es posible que requiera trunc/modificar un poco su consulta)
Names Default To Here(1);
start_date = 01Jul2023;
end_date = 31Jan2024;
datecount = Date Difference(start_date, end_date, "Day");
Show(As Date(start_date + In Days(datecount)));
sql_template = "\[select sysdate - ^i^ startdate, sysdate - ^i - 1^ enddate from dual]\";
For(i = 1, i <= datecount, i++,
cur_sql = Eval Insert(sql_template);
Show(cur_sql);
);
Además, lo más probable es que desee concatenar los resultados de la consulta dentro de la consulta y agregar un registro de impresión simple puede ser útil (normalmente imprimo al menos: índice/fecha actual que se está consultando, cuántas filas obtuvo y cuánto tiempo tomó la consulta). ).