[英]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_at
和works.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.