我有兩列(session_starttime 和 session_endtime),其資料型別是文本。如圖所示,只存盤了時間部分,沒有存盤日期。

我正在努力以秒為單位獲得會話持續時間。最終目標是獲得每個會話的平均時間。
我試過下面的代碼,但沒有用
select
avg(datediff('second', session_endtime,session_starttime)) as Average_settlement_time
from user_sessions ```
錯誤
(psycopg2.errors.UndefinedFunction) 函式 datediff(unknown, text, text) 不存在第 8 行:avg(datediff('second', session_endtime,session_starttime)) a...
提示:沒有函式匹配給定的名稱和引數型別。您可能需要添加顯式型別轉換。
uj5u.com熱心網友回復:
PostgreSQL 沒有datediff函式。
您可以顯式地將兩列強制轉換為time然后減去它們,從而得到INTERVAL結果:
SELECT session_endtime::TIME - session_starttime::TIME
FROM mytable
-- E.g. returns 0 years 0 mons 0 days 0 hours 1 mins 40.00 secs for the first row
如果您想要秒數而不是INTERVAL,您可以從中提取 EPOCH:
SELECT EXTRACT(EPOCH FROM session_endtime::TIME - session_starttime::TIME)
FROM mytable
-- E.g. returns 100 for the first row
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/391750.html
標籤:sql PostgreSQL的
下一篇:OracleSum小計查詢
