사용자 입력 변수를 기반으로 SQL에서 사용자 지정 날짜 범위 지정안녕,
사용자 지정 사용자 입력 기반 변수를 내 SQL 코드에 포함하려고 시도하는 동안 문제가 발생했습니다. 연결하려는 데이터베이스의 문제는 날짜 열이 문자라는 것입니다. 따라서 SQL 쿼리 내부의 하드 코딩된 날짜와 잘 작동하는 실제 코드는 다음과 같습니다.
Open Database("Generic database connection string",
" SELECT
p.productname,
p.model,
p.family,
TO_DATE (SUBSTR (txntime, 1, 15), 'yyyy/mm/dd hh24miss') txntime
FROM database p
WHERE
txntime >= '20161201 000000000'
AND txntime < '20161231 000000000'
",
// End of SQL statement
"New_Table" // New table name
);아래 그림은 이 테이블에 날짜가 저장되는 방법에 대한 샘플 보기를 보여줍니다. 열 속성은 Character & Nominal입니다.

다음은 사용자 입력 변수를 삽입하려고 시도한 코드입니다. 이 코드는 빈 테이블을 반환합니다.
Delete Symbols();
Delete Globals();
nw = new window("Scrap Data", << modal(),
panelbox("Enter Date Range",
hlistbox(
text box("From Date"),
fromdate_teb = text edit box("%", << set width (100)),
),
hlistbox(
text box("To Date"),
todate_teb = text edit box("%" , << set width (100)),
),
),
panelbox("Actions",
hlistbox(
ok_button = button box("OK",
fromdate = fromdate_teb << get text;
todate = todate_teb << get text;
ok_pushed = 1;),
cancel_button = button box("Cancel", ok_pushed = 0),
)
)
);
Open Database("Generic database connection string",
" SELECT
p.productname,
p.model,
p.family,
TO_DATE (SUBSTR (txntime, 1, 15), 'yyyy/mm/dd hh24miss') txntime
FROM database p
WHERE
txntime >= '^fromdate^'
AND txntime < '^todate^'
",
// End of SQL statement
"New_Table" // New table name --> can be changed as per requirements
);
Re: 사용자 입력 변수를 기반으로 SQL에서 사용자 지정 날짜 범위를 가집니다.도움을 주셔서 감사합니다. 이것은 완벽하게 작동했습니다!
Re: 사용자 입력 변수를 기반으로 SQL에서 사용자 지정 날짜 범위를 가집니다.test_date에 대한 WHERE 절을 수정하여 수정했습니다.
AND test_data.test_date BETWEEN TO_DATE('^fromdate^', 'YYYY/MM/DD hh:mi:ss am') AND TO_DATE('^todate^', 'YYYY/MM/DD hh:mi:ss am')
이제 동일한 쿼리에서 2개의 데이터베이스에 걸쳐 동일한 입력 날짜 변수를 사용할 수 있습니다. 한 쿼리는 숫자 날짜로 데이터를 가져오고 다른 SQL은 날짜가 문자 기반인 데이터를 가져옵니다.Re: 사용자 입력 변수를 기반으로 SQL에서 사용자 지정 날짜 범위를 가집니다.텍스트 상자에서 동일한 사용자 입력을 동일한 스크립트 내에서 다른 데이터베이스 SQL 가져오기에서 작동하도록 하는 방법이 있습니까? 유일한 문제는 이 새 데이터베이스가 기존/표준 숫자 유형 날짜 열을 따른다는 것입니다. 사용자 입력(fromdate 및 todate)을 월-일-년 숫자 형식의 보조 변수로 변환하는 방법이 있습니까? 이미 해결된 문제에 사용할 기본 문자 기반 날짜와 숫자 날짜를 기반으로 데이터를 추출하도록 보조 설정됩니다.
다음은 다른 데이터베이스에서 수율 데이터를 추출하는 데 사용하려는 SQL입니다.
nw = new window("New Window for user input", << modal(),
panelbox("Enter Date Range",
lineup box(ncol(2),
text box("From Date: "),
fromdate_teb = text edit box(format(today(),"y/m/d h:m:s"), << set width (150)),
text box("To Date: "),
todate_teb = text edit box(format(today(),"y/m/d h:m:s") , << set width (150)),
),
),
panelbox("Actions",
hlistbox(
ok_button = button box("OK",
fromdate = fromdate_teb << get text();
todate = todate_teb << get text();
ok_pushed = 1;),
cancel_button = button box("Cancel", ok_pushed = 0),
)
)
);
print(fromdate, todate);
Yieldsql = evalinsert(
" SELECT
model,
lot,
wafer,
COUNT(test_status_code) as BIN_COUNT
FROM
test_data
WHERE
purpose='PROD'
AND test_data.test_date BETWEEN TO_DATE('^fromdate^', 'MM/DD/YYYY hh24:mi:ss') AND TO_DATE('^todate^', 'MM/DD/YYYY hh24:mi:ss')
ORDER by lot, wafer");
dt = Open Database( "Generic database connection string", Yieldsql, "Yield_Data");
Re: 사용자 입력 변수를 기반으로 SQL에서 사용자 지정 날짜 범위를 가집니다.매우 감사합니다. 이 스크립트는 훌륭하게 작동하고 있으며 데이터를 받고 있습니다.
Re: 사용자 입력 변수를 기반으로 SQL에서 사용자 지정 날짜 범위를 가집니다.다른 날짜에 해치를 일치시켜야 합니다. JMP에서 가져온 날짜에는 하나의 날짜 마스크가 있고 데이터베이스의 날짜에는 다른 날짜 마스크가 있습니다. 이렇게 해야 합니다:
nw = new window("Scrap Data", << modal(),
panelbox("Enter Date Range",
lineup box(ncol(2),
text box("From Date: "),
fromdate_teb = text edit box(format(today(),"y/m/d h:m:s"), << set width (150)),
text box("To Date: "),
todate_teb = text edit box(format(today(),"y/m/d h:m:s") , << set width (150)),
),
),
panelbox("Actions",
hlistbox(
ok_button = button box("OK",
fromdate = fromdate_teb << get text();
todate = todate_teb << get text();
ok_pushed = 1;),
cancel_button = button box("Cancel", ok_pushed = 0),
)
)
);
print(fromdate, todate);
sql = evalinsert(
"SELECT
p.productname,
p.model,
p.family,
TO_DATE(SUBSTR (txntime, 1, 15), 'yyyymmdd hh24miss') txntime
FROM database p
WHERE TO_DATE(SUBSTR (txntime, 1, 15), 'yyyymmdd hh24miss') >= to_date('^fromdate^', 'yyyy/mm/dd hh:mi:ss am')
AND TO_DATE(SUBSTR (txntime, 1, 15), 'yyyymmdd hh24miss') < to_date('^todate^', 'yyyy/mm/dd hh:mi:ss am')");
Open Database("Generic database connection string", sql, "New_Table");
print(sql);Re: 사용자 입력 변수를 기반으로 SQL에서 사용자 지정 날짜 범위를 가집니다.Mark에게 감사하지만 불행히도 실행하려고 할 때 다음 오류가 표시됩니다.

날짜와 시간(빨간색으로 강조 표시됨) 사이의 공백 연결로 인해 오류가 발생한 것 같습니다. 날짜와 시간 사이에 공백을 두는 다른 방법이 있습니까?
TO_DATE(SUBSTR (txntime, 1,4)||"/"||SUBSTR(txntime,5,2)||"/"||SUBSTR(txntime,7,2)||" "||SUBSTR(txntime,10,2)||":"||SUBSTR(txntime,12,2)||":"||SUBSTR(txntime,14,2),'yyyy/mm/dd hh24:mi:ss') txntime
또한 where 절의 'am' 텍스트에 대한 질문이 있습니다. 왜 거기에 필요한지 알려주시겠습니까?

Re: 사용자 입력 변수를 기반으로 SQL에서 사용자 지정 날짜 범위를 가집니다.TO_DATE 함수의 날짜와 날짜 형식이 일치해야 합니다.
내가 보낸 스크립트의 선택 섹션에서 다음을 시도하십시오.
TO_DATE(
SUBSTR(전송 시간, 1,4)||"/"||SUBSTR(전송 시간,5,2)||"/"||SUBSTR(전송 시간,7,2)||" "||
SUBSTR(txntime,10,2)||":"||SUBSTR(txntime,12,2)||":"||SUBSTR(txntime,14,2),
'yyyy/mm/dd hh24:mi:ss') txntime
Re: 사용자 입력 변수를 기반으로 SQL에서 사용자 지정 날짜 범위를 가집니다.이 문제의 가장 큰 원인은 제가 다루고 있는 데이터베이스가 타임스탬프를 가지고 있는 것이 문자 형식이기 때문입니다. 

Re: 사용자 입력 변수를 기반으로 SQL에서 사용자 지정 날짜 범위를 가집니다.안녕 마크,
답장도 감사합니다. 이 코드에도 문제가 있습니다.
다음은 텍스트 상자에 입력한 사용자의 스냅샷과 로그에 표시되는 오류입니다.


Re: 사용자 입력 변수를 기반으로 SQL에서 사용자 지정 날짜 범위를 가집니다.안녕 짐,
답장을 보내 주셔서 감사합니다. 하지만 여전히 문제가 있습니다. 다음은 내 입력의 스냅샷과 로그에 표시된 해당 오류입니다.
입력 유형 1


입력 유형 2


코드의 이 부분에서 문제가 발생하는 것 같지만 여전히 JSL을 배우는 중입니다. 귀하와 같은 전문가의 피드백에 감사드립니다. SQL에서 사용자 입력 변수 "fromdate" & "todate"를 직접 사용할 수 있는 방법이 있습니까?

Re: 사용자 입력 변수를 기반으로 SQL에서 사용자 지정 날짜 범위 지정사용자가 입력하는 시작 날짜와 종료 날짜에 대한 형식을 적용해야 한다고 생각하므로 옵션을 제공했습니다. 그러나 주요 문제는 where 문에 있다고 생각하므로 필요한 항목에 근접할 수 있는 옵션을 제공했습니다.
Delete Symbols();
Delete Globals();
nw = new window("Scrap Data", << modal(),
panelbox("Enter Date Range",
hlistbox(
text box("From Date"),
fromdate_teb = text edit box(format(today(),"y/m/d h:m:s"), << set width (100)),
),
hlistbox(
text box("To Date"),
todate_teb = text edit box(format(today(),"y/m/d h:m:s") , << set width (100)),
),
),
panelbox("Actions",
hlistbox(
ok_button = button box("OK",
fromdate = fromdate_teb << get text();
todate = todate_teb << get text();
ok_pushed = 1;),
cancel_button = button box("Cancel", ok_pushed = 0),
)
)
);
Open Database("Generic database connection string",
" SELECT
p.productname,
p.model,
p.family,
TO_DATE (SUBSTR (txntime, 1, 15), 'yyyy/mm/dd hh24:mi:ss') txntime
FROM database p
WHERE
txntime >= to_date('"|| fromdate || "', 'yyyy/mm/dd hh:mi:ss am')
AND txntime < to_date('"|| todate || "', 'yyyy/mm/dd hh:mi:ss am')
",
// End of SQL statement
"New_Table" // New table name --> can be changed as per requirements
);
Re: 사용자 입력 변수를 기반으로 SQL에서 사용자 지정 날짜 범위 지정이것을 시도하고 그것이 당신에게 효과가 있는지 확인하십시오
Names Default To Here( 1 );
Delete Symbols();
Delete Globals();
nw = New Window( "Scrap Data",
<<MODAL>= __From_Date__
AND txntime < __To_Date__
",
// End of SQL statement
"New_Table" // New table name --> can be changed as per requirements
)
),
Expr( __From_Date__ ), Parse( "'" || fromdate || "'" ),
Expr( __To_Date__ ), Parse( "'" || todate || "'" )
)
);</MODAL>