總體目標:在查詢生成器中創建一個查詢,該查詢對日期時間列進行過濾,僅提取當前時間最後 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>
如果比較數據庫中的日期時間列,則需要一個日期時間值進行比較,但格式返回一個字符串。 因此,據我所知,這將行不通。 您需要將數據庫中的日期時間字符串轉換為日期時間值。
但是對於您的任務,您可以通過簡單地從數據庫中獲取當前日期並減去一些天數來避免這個問題,並將其作為查詢生成器中的自定義表達式實現,
但語法將取決於數據庫。
對於 ANSI,它可能看起來像這樣:
t1.datetime > addday(now(), -7)
對於 Oracle,它可能看起來像
t1.datetime > sysdate - 7