SELECT DATE_PART('DAY',"repairClose"-"createdOn")::INTEGER as "noOfDays"
FROM "mstRecord"
WHERE "repairClose" is not null
我試過上面的查詢,它返回的結果包括星期日。我希望排除週日的結果。計算工作日(不包括星期日)
SELECT DATE_PART('DAY',"repairClose"-"createdOn")::INTEGER as "noOfDays"
FROM "mstRecord"
WHERE "repairClose" is not null
我試過上面的查詢,它返回的結果包括星期日。我希望排除週日的結果。計算工作日(不包括星期日)
嘗試使用extract(dow from "column") <> 0
這裏有一個例子:
t=# with dates as (select generate_series(now(),now()+'3 weeks'::interval,'1 day'::interval) "repairClose", now() "createdOn")
select "repairClose"-"createdOn","repairClose"::date, "createdOn"::date
from dates
where extract(dow from "repairClose") <> 0;
?column? | repairClose | createdOn
----------+-------------+------------
00:00:00 | 2017-07-31 | 2017-07-31
1 day | 2017-08-01 | 2017-07-31
2 days | 2017-08-02 | 2017-07-31
3 days | 2017-08-03 | 2017-07-31
4 days | 2017-08-04 | 2017-07-31
5 days | 2017-08-05 | 2017-07-31
7 days | 2017-08-07 | 2017-07-31
8 days | 2017-08-08 | 2017-07-31
9 days | 2017-08-09 | 2017-07-31
10 days | 2017-08-10 | 2017-07-31
11 days | 2017-08-11 | 2017-07-31
12 days | 2017-08-12 | 2017-07-31
14 days | 2017-08-14 | 2017-07-31
15 days | 2017-08-15 | 2017-07-31
16 days | 2017-08-16 | 2017-07-31
17 days | 2017-08-17 | 2017-07-31
18 days | 2017-08-18 | 2017-07-31
19 days | 2017-08-19 | 2017-07-31
21 days | 2017-08-21 | 2017-07-31
(19 rows)
with gs(d) as (
select d::date
from generate_series (
(select min("createdOn") from "mstRecord"),
(select max("repairClose") from "mstRecord"),
'1 day'
) gs (d)
)
select (
select count(*)
from gs
where
"createdOn" <= d and "repairClose" > d
and
extrat(dow from d) <> 0
) as "noOfDays"
from "mstRecord"
where "repairClose" is not null
選擇 (SELECT COUNT(*)AS count_days_no_weekend FROM generate_series( 「createdOn」 ::日期, 「repairClose」 :: date,'1 day')d(the_day) where'extractClose'is not null order by「no_of_days」
在postgres中,在EXTRACT()中添加「isodow」選項,其中星期日= 7,星期一= 1,星期二= 2等等。
什麼是您的數據庫結構? – yanman1234
@ yanman1234上面提到的列具有帶時區的時間戳作爲數據類型 – sidoo05