我正在使用Postgres(PL/pgSQL)开发一个算法,我需要计算两个时间戳之间的工作小时数,考虑到周末不工作,剩下的时间只计算在上午8点到下午15点.
例子:
从12月3日下午14点到12月4日上午9点应该计算2个小时:
3rd = 1, 4th = 1
Run Code Online (Sandbox Code Playgroud)从12月3日下午15点到12月7日上午8点,应该计算8小时:
3rd = 0, 4th = 8, 5th = 0, 6th = 0, 7th = 0
Run Code Online (Sandbox Code Playgroud)考虑小时分数也会很棒.
要查找两个日期之间的天数,我们可以使用如下代码:
SELECT date_part('day',age('2017-01-31','2017-01-01')) as total_days;
Run Code Online (Sandbox Code Playgroud)
在上面的查询中,我们得到30作为输出,而不是31。为什么?
我还想找到除星期日外的天数。间隔的预期输出('2017-01-01', '2017-01-31'):
Total Days = 31
Total Days except Sundays = 26
Run Code Online (Sandbox Code Playgroud)