查询日期时如何循环?大家好
我正在尝试使用 JMP 查询数据库。在我的查询中,我手动将 dateNow 值从第 1 天更改为第 30 天,然后运行脚本。但我需要创建另一个可以在所有日子里循环的内容。
如何创建一个循环来查询从 2023 年 7 月到 2024 年 1 月之间的每个日期?
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" );
自动化和脚本编写Re: 查询日期时如何循环?这是我的解决方案。
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: 查询日期时如何循环?根据您的 sql,您可能能够从日期中扣除索引(可能需要 trunc /稍微修改您的查询)
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);
);
另外,您很可能希望在查询中连接查询结果,并添加一些简单的打印日志记录可能会有所帮助(我通常至少打印:正在查询的当前索引/日期、返回的行数以及查询花费的时间)。