【发布时间】:2017-06-23 16:43:25
【问题描述】:
我正在创建一个计算两个时间戳之间差异的选择
这里是代码:(您不必了解下面的表格。只需按照线程)
(select value from demo.data where id=q.id and key='timestampend')::timestamp
- (select value from demo.data where id=q.id and key='timestampstart')::timestamp) as durata
看看这个例子,如果你想更简单:
select timestamp_end::timestamp - timestamp_start as duration
结果如下:
// “durata”是持续时间
问题是第一个时间戳是 2017-06-21,第二个是 2017-06-22,所以我们有 1 天和几个小时的差异。 我该如何做才能显示结果不是像“1 天 02:06:41.993657”而是“26:06:41.993657”而不是毫秒(26:06:41)?
更新 我正在测试这个查询:
select id as ticketid,
(select value from demo.data where id=q.id and key = 'timestampstart')::timestamp as TEnd,
(select value from demo.data where id=q.id and key = 'timestampend')::timestamp as TStart,
(select
make_interval
(
0,0,0,0, -- years, months, weeks, days
extract(days from duration1)::int * 24 + extract(hours from duration1)::int, -- calculated hours (days * 24 + hours)
extract(mins from duration1)::int, -- minutes
floor(extract(secs from duration1))::int -- seconds, without miliseconds, thus FLOOR()
) as duration1
from
(
(select value from demo.data where id=q.id and key='timestampstart')::timestamp - (select value from demo.data where id=q.id and key='timestampend')::timestamp
) t(duration) as dur
from (select distinct id from demo.data) q
错误相同:[Err] ERROR: "::" 处或附近的语法错误 id = q.id 有错误
数据表是这样的:
【问题讨论】:
标签: postgresql date-difference