Heim > Backend-Entwicklung > PHP-Tutorial > 前辈们,师兄们,小弟我在比较时间的有关问题上被困扰住了,特别需要你们帮助,拜托你们帮帮小弟我

前辈们,师兄们,小弟我在比较时间的有关问题上被困扰住了,特别需要你们帮助,拜托你们帮帮小弟我

WBOY
Freigeben: 2016-06-13 12:14:56
Original
1047 Leute haben es durchsucht

前辈们,师兄们,我在比较时间的问题上被困扰住了,特别需要你们帮助,拜托你们帮帮我!
考勤时间存储格式问题。我用的bigint,存储了时间戳。
限定:早上9点之前刷卡,5点半之后刷卡,算作没有迟到也没有早退。
刷卡签到和刷卡签退分别用了两张表:signin和signout。
遇到的问题有:
1. 我如何在用户刷卡的时候就判断他是否迟到或早退。
2. 在月末统计的时候,我如何获取他本月所有迟到和早退的记录。

关于时间的比较,感觉很头疼。还望各位前辈指点我,十分感谢。我用的thinkphp mysql。

数据表定义如下:

create table ts_user
(wxname varchar(50) not null primary key,
 name varchar(50) not null,
telnum char(11) not null unique,
email varchar(50) unique,
address varchar(100)
)ENGINE=InnoDB DEFAULT charset=utf8;

create table ts_signin
(signid int not null auto_increment primary key,
 wxname varchar(50) not null,
 date timestamp not null,
location varchar(100) not null
)DEFAULT charset=utf8;

create table ts_signout
(signid int not null auto_increment primary key,
 wxname varchar(50) not null,
 date timestamp not null,
location varchar(100) not null
)DEFAULT charset=utf8;

alter table ts_signin add foreign key (wxname) references ts_user(wxname);
alter table ts_signout add foreign key (wxname) references ts_user(wxname);

我就在这一边想一等,能得到前辈指点,感激不尽!
------解决思路----------------------

<br />    	echo date('h', strtotime("2015-01-27 09:01:10")); //9点<br />    	echo date('i', strtotime("2015-01-27 09:01:10"));//01分<br />
Nach dem Login kopieren

------解决思路----------------------
记录数据的同时判断迟到和早退,并作为一个新字段保存
当天9点的时间戳:strtotime(date('Y-m-d') . ' 09:00')跟time()对比就可以了
------解决思路----------------------
<br /><br />create table ts_user<br />(wxname varchar(50) not null primary key,<br /> name varchar(50) not null,<br />telnum char(11) not null unique,<br />email varchar(50) unique,<br />address varchar(100)<br />)ENGINE=InnoDB DEFAULT charset=utf8;<br /><br />create table ts_signin<br />(signid int not null auto_increment primary key,<br /> wxname varchar(50) not null,<br /> sdate int(10) not null,<br />chidao int(1) default 0,  // 1迟到,0没有迟到 int或bool 类型都行<br />edate int(10) not null,<br />zaotui int(1) default 0, //1早退,0没有早退, <br />location varchar(100) not null  // 这是干嘛的不知道<br />)DEFAULT charset=utf8;<br />
Nach dem Login kopieren

直接select count(chidao ) as chidaoa from  ts_user,ts_signin, where ts_signin.wxname =ts_user.wxname and (1个月的判断)
类似这个就行, 
每天加1条数据, 迟到,早退,都知道, 记得在每天晚上12点刷新, 没有签到,的,列为迟到, 或早退,插入数据段时候直接 写入chidao, 早退判断
------解决思路----------------------
我设置够公司的考勤机,比较复杂,还可以根据用户分部门,分时间组;但是整体来说,一个用户只可能属于一个考勤排班组。

考勤机还有一个设置,就是什么时候开始判断为上班,什么时候开始判断为下班;然后配上考勤排班里面的上下班时间,就不然判断他是否迟到或早退。

月末统计比较简单,知道获取到所有符合考勤的时间,比如你9:00上班,你就把所有上班考勤早于9:01分的考勤全部列出来了,然后循环一下日期,顺便去除放假的时间,自然而然的,迟到就出来了

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage