繁体   English   中英

PostgreSQL 的时间戳差异(以分钟为单位)

[英]Timestamp Difference In minutes for PostgreSQL

我有以下查询:

Select works.id, works.client_id, COALESCE(TIMESTAMPDIFF(MINUTE,works.begin_at,works.finish_at), 0) / 60 * (clients.worker_cost_hourly * works.number_of_workers + works.machines *             clients.machine_cost_hourly) as cost
from works join clients on works.client_id = clients.id
where works.paid = 0

这对mysql工作正常,但postgresql抱怨TIMESTAMPDIFF ......有没有办法在两个 DBMS 中使用相同的查询实现这种行为?

顺便说一句, works.begin_atworks.finish_at被定义为time

您可以减去两次:这为您提供了一个间隔,您可以使用extract()将其转换为秒,然后使用算术将其转换为分钟:

extract(epoch from works.finish_at - works.begin_at) / 60

这将返回一个整数值。 如果你还想要小数部分,那么:

extract(epoch from works.finish_at - works.begin_at) / 60.0 

EXTRACT(EPOCH FROMworks.begin_at) - EXTRACT(EPOCH FROMworks.finish_at))/3600 给你小时差

Select works.id, works.client_id
, COALESCE(T(EXTRACT(EPOCH FROM works.begin_at) - EXTRACT(EPOCH FROM works.finish_at))/3600, 0) / 60 * (clients.worker_cost_hourly * works.number_of_workers 
+ works.machines * clients.machine_cost_hourly) as cost
from works join clients on works.client_id = clients.id
where works.paid = 0

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM