【发布时间】:2022-01-24 23:36:56
【问题描述】:
我有两列(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...
提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
【问题讨论】:
-
标记垃圾邮件并不能帮助我们帮助您。标记您真正使用的RDBMS,并且仅该RDBMS。
-
错误信息看起来像 PostgreSQL 之一。如果这是正确的,那么您必须在应用函数之前将字符串类型的时间值显式转换为 TIME 数据类型。 PS。在 PostgreSQL 中,函数 DATEDIFF() 根本不存在。减去然后将 INTERVAL 数据类型转换为秒。
-
在 Postgres 中,您只需使用
session_endtime - session_starttime -
如果要存储时间,则应将该列转换为
time数据类型。 -
会话可以从
23:55:00开始并在00:05:00结束吗?一个会话可以持续超过 24 小时吗?
标签: sql postgresql