날짜를 쿼리할 때 반복하는 방법은 무엇입니까?안녕하세요 여러분
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);
);
또한 쿼리 내부에 쿼리 결과를 연결하고 간단한 인쇄 로깅을 추가하는 것이 도움이 될 수 있습니다. (저는 일반적으로 적어도 쿼리 중인 현재 인덱스/날짜, 반환된 행 수 및 쿼리에 걸린 시간을 인쇄합니다. ).