日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

考勤月度统计mysql_mysql中跨月统计考勤天数-问答-阿里云开发者社区-阿里云

發(fā)布時間:2023/12/20 数据库 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 考勤月度统计mysql_mysql中跨月统计考勤天数-问答-阿里云开发者社区-阿里云 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

如果是PostgreSQL,你可以這樣來實現(xiàn):

首先需要創(chuàng)建一個剔除周末的函數(shù):create or replace function minus_weekend(timestamp, timestamp) returns interval as

$$

declare

s timestamp := $1;

e timestamp := $2;

sd date;

ed date;

i interval := interval '0';

x int;

x1 interval;

x2 interval;

begin

if e < s then

s := $2;

e := $1;

end if;

select case when extract(isodow from s) not in (6,7) then date(s+interval '1 day')-s else interval '0' end,

case when extract(isodow from e) not in (6,7) then e-date(e) else interval '0' end

into x1, x2;

if date(e)-date(s) = 0 then

if extract(isodow from s) not in (6,7) then

return e-s;

else

return interval '0';

end if;

elsif date(e)-date(s) = 1 then

return x1 + x2;

end if;

sd := date(s)+1;

ed := date(e);

for x in 0..(ed-sd-1) loop

if extract(isodow from sd+x) not in (6,7) then

i := i + interval '1 day';

end if;

end loop;

return i+x1+x2;

end;

$$

language plpgsql strict;

接下來就可以使用這個函數(shù)滿足你的需求postgres=> create table tbl(username name, begin_time timestamp, end_time timestamp);

CREATE TABLE

postgres=> insert into tbl values ('a','2012-10-28 08:30','2012-11-05 17:30');

INSERT 0 1

postgres=> insert into tbl values ('b','2012-11-02 08:30', '2012-11-07 13:30');

INSERT 0 1

postgres=> insert into tbl values ('a','2012-11-08 13:30', '2012-11-09 17:30');

INSERT 0 1

postgres=> select sum(minus_weekend(begin_time,end_time)) from tbl where username='a' ;

sum

-----------------

5 days 45:30:00

(1 row)

總結

以上是生活随笔為你收集整理的考勤月度统计mysql_mysql中跨月统计考勤天数-问答-阿里云开发者社区-阿里云的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。