我在postgres有一个表,有两列;订购时间戳,工作日时间。
我想创建第三列'due\u timestamp',它是使用'ordered\u timestamp'加上'weekday\u hours'来计算的……但不包括周末的时间(星期六上午12:00到星期一上午12:00)
ordered_timestamp | weekday_hours | due_timestamp
2020-06-04 16:00:00 | 12 | 2020-06-05 04:00:00
2020-06-05 16:00:00 | 48 | 2020-06-09 16:00:00
如果没有排除周末时间的警告,我可以 ordered_timestamp + interval '1 hour' * weekday_hours
在某些情况下,工作日的工作时间从1小时到数百小时不等。
看来这种情况需要一些额外的东西来过滤掉周末的时间。
2条答案
按热度按时间shyt4zoc1#
如果您的日期间隔可能跨越不同的时期,我会使用一个相当暴力的方法,通过列举所有1小时间隔之间的时间戳与
generate_series()
,然后只计算属于工作日的天数:db小提琴演示:
ujv3wf0j2#
像这样的?