使用 SQLite,我如何檢索當前時間在記錄開始時間和停止時間之間的第一條記錄,或者,如果當前時間超出所有現有記錄的開始/停止時間,而是檢索當前本地時間之后的下一個記錄時間?
這是我的桌子:
TABLE sessions (
session_id INTEGER PRIMARY KEY AUTOINCREMENT,
session_start REAL,
session_stop REAL,
group_id INTEGER REFERENCES [groups] (group_id) ON DELETE CASCADE
);
示例資料:
session_id session_start session_stop group_id
1 2459599.755438762 2459599.963772095 1
2 2459600.0471054283 2459600.1721054283 2
3 2459600.755438762 2459600.963772095 1
會話表有一個外鍵 group_id,但為了這個例子,也許我們可以把它放在一邊。
編輯:
在一個小型測驗應用程式中嘗試了 mankowitz 建議:
SQL.Text:='SELECT *, julianday(''Now'',''localtime'') AS julian_now FROM sessions '
'WHERE session_start > julian_now '
'ORDER BY session_stop < julian_now LIMIT 1';
運行時的當前時間是 2022-01-17 05:40:45,應該選擇 session_id 為 16 的記錄,因為它最接近時間。如何為此修改代碼?

uj5u.com熱心網友回復:
對于條件:
當前時間介于記錄開始時間和停止時間之間
ORDER BY您在子句中需要這個布爾運算式:
julianday('now', 'localtime') BETWEEN session_start AND session_stop
對于條件:
或者,如果當前時間在所有現有記錄的開始/停止時間之外,則檢索當前本地時間之后的下一個時間記錄
你需要這個:
julianday('now', 'localtime') > session_stop
像這樣寫你的查詢:
SELECT *
FROM sessions
ORDER BY julianday('now', 'localtime') BETWEEN session_start AND session_stop DESC,
julianday('now', 'localtime') > session_stop DESC,
session_start
LIMIT 1;
uj5u.com熱心網友回復:
select * from sessions where sesson_start>{currenttime} order by session_end<{currenttime} limit 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/414505.html
標籤:
上一篇:計算今天的日期是否在其他兩個日期之間-但僅限日期和月份
下一篇:在React中創建時鐘
