전체 목표: 현재 시간의 마지막 7일 동안의 데이터만 가져오는 날짜 시간 열을 필터링하는 쿼리 작성기에서 쿼리를 만듭니다. 쿼리 작성기에서 사용자 지정 식을 사용하여 이 작업을 수행하려고 합니다. 이상적으로는 사용자 정의 표현식 필터에서 다음과 같을 것이지만 데이터를 가져오지 않습니다.
t1.TimeCol >= format((Today() - InDays(7)), "m/d/y h:m:s")
Query Builder는 WHERE 문 'ymd h:m:s'(예: '2022-07-07 11:13:55')에 대해 특정 날짜 시간 형식을 사용하는 것으로 보입니다. JMP에는 기본 제공 형식이 없습니다. 을 위한. 따라서 아래에 표시된 사용자 지정 날짜 형식을 사용하여 만들었습니다. 이 예 . 데이터 테이블에서 예상대로 날짜 시간 열을 사용자 지정 형식으로 변환합니다. "알 수 없는 형식: myNamespace:QueryDate" 오류가 발생하지만 jsl 코드에서 형식을 호출하는 데 어려움을 겪고 있습니다. 어떤 통찰력? 감사해요!
print(format(Today(), "m/d/y"));
print(format(Today(), "myNamespace:QueryDate"));
맞춤 형식:
Add Custom Functions(
New Custom Function(
"myNamespace",
"QueryDate",
Function( {inputVar},
{Default Local},
Char( Year( inputVar ) ) || "-" || Char( Month( inputVar ) ) || "-" ||
Char( Day( inputVar ) ) || " " ||
Char(Hour(inputVar)) || ":" || Char(Minute(inputVar)) || ":" || Char(Second(inputVar))
),
<<DESCRIPTION></DESCRIPTION>
데이터베이스에서 datetime 열을 비교하는 경우 비교를 위해 datetime 값이 필요하지만 format은 문자열을 반환합니다. 그래서 이것은 내가 볼 수 있는 한 작동하지 않을 것입니다. 데이터베이스의 datetime 문자열을 datetime 값으로 변환해야 합니다.
그러나 작업을 위해 데이터베이스에서 현재 날짜를 가져오고 몇 일을 빼서 쿼리 빌더에서 사용자 지정 식으로 구현하면 이 문제를 피할 수 있습니다.
그러나 구문은 데이터베이스에 따라 다릅니다.
ANSI의 경우 다음과 같이 표시될 수 있습니다.
t1.datetime > addday(now(), -7)
Oracle의 경우 다음과 같이 보일 수 있습니다.
t1.datetime > sysdate - 7