在计算PostgreSQL中两个日期之间的工作时间时,可以使用EXTRACT
函数和DATE_PART
函数。这两个函数可以帮助您计算两个日期之间的天数、小时数、分钟数和秒数。
例如,如果您想计算两个日期date1
和date2
之间的工作时间,可以使用以下查询:
SELECT EXTRACT(EPOCH FROM (date2 - date1)) AS seconds_between;
这将返回两个日期之间的秒数。如果您想要计算工作时间(不包括周末和节假日),则需要使用更复杂的查询。
在计算工作时间时,可以使用以下查询:
SELECT
COUNT(*) FILTER (WHERE EXTRACT(DOW FROM d) NOT IN (0,1)) * 8 * 3600 +
COUNT(*) FILTER (WHERE EXTRACT(DOW FROM d) IN (2,3,4,5)) * 1800
FROM generate_series(date1, date2, INTERVAL '1 day') d
WHERE d >= date1 AND d <= date2;
这将返回两个日期之间的工作时间(以秒为单位)。
需要注意的是,这个查询假设工作日是周二到周五,工作时间是上午9点到下午5点。如果您的工作时间和工作日不同,则需要相应地修改查询。
领取专属 10元无门槛券
手把手带您无忧上云