我正在开发一个应用程序,它在一定程度上是员工的计时器。这并不是太复杂,但我想确保第一次我的方向是正确的。我目前有这样的表结构:
id - int
employee_id - int (fk)
timestamp - mysql timestamp
event_code - int (1 for clock in, 0 for clock out)
如果他们的最后一次活动是“打卡”,他们只会看到“打卡”按钮,反之亦然。
我的问题是,我们需要运行一个报告,显示一个员工在一个月内工作了多少小时,以及本财年(自本年度6月1日以来)的总小时数。
似乎我可以将打卡和打卡存储在同一条记录中,甚至可以计算两个
在工作中,我们有一台指纹识别打卡机,让员工可以在上班和下班时打卡。每周结束时,我会将打卡机中的数据导出到excel中,然后手动浏览文件并生成一个进出表,该表显示每个员工的打卡/退卡时间。
我正在寻找一种自动化的方法,我使用我的其他excel工作表中的一个公式来查找数据,并将同一行中的信息拖入表中。
=VLOOKUP($K$11,'Data Sheet'!$A$2:$AD$6000,30,FALSE)
这在我使用它的工作表中是有效的,但当我尝试将它应用于打卡信息时,我得到的随机信息比特与我试图提取的数据混淆。
打卡机的原始数据布局如下:
UID Name Status
我有一个表与员工登录小时历史,它有员工ID,打卡时间,打卡时间。我需要将此行转换为多行的钟表小时数。如果员工在上午10:00和下午6:00之间打卡,我需要8行,其中一行用于10am,11am..until 5 5pm
样本输入
Id start time end time work hours
1 10:00 18:00 8
2 09:00 18:00 9
ID %1的所需结果
Id st_time work hours
1 10:00 1
1 11:00 1
1 12:00 1
1 13:00
我有一个显示员工详细信息的表格,以及一个“dateValue”,这是一个基于员工上班时间的数字。如你所见,'Dave‘今天已经打卡两次了,但我只想看到Dave最近的打卡(数字越大,打卡越近) ID是' employee‘和'clock’数据库中的一个列,它将这两个数据库链接在一起,对于每个员工来说都是唯一的。 下表的SQL SELECT e.name, e.country, e.role, e.age, c.dateValue FROM employee e left join clock c on e.ID = c.ID
| e.name | e.coun
我需要计算员工打卡上班和打卡下班的时间。我将这些记录存储在一个表中。该表有时间和用于输入打孔或输出打孔的字段。员工可能会因为午餐或其他原因外出,并因进出而拳打脚踢。我需要扣除这些时间并得到工作时间。我的表格将如下所示:
PunchTime EmpCode IsInpunch
10:01 AM (A) T
12:03 PM (A) F (this isoutpunch)
01:05 PM (A) T
07:14 PM (A) F
10:32 AM (B) T
对于(A)的时间
我想根据员工的打卡时间将他们的时间数据分成多行。对于这个例子,如果他们在早上7点之前打卡,那么在此之前的所有数据将被分成一个新的数据行,而上午7点及之后的所有数据都是另一行数据。以下是具有所需结果集的一些数据的示例。这是为了帮助计算加班时间。如果他们在设定班次之前出现,那么这个时间就是加班费
Create Table TimeData(
[ID] [int] IDENTITY(1,1) NOT NULL,
[EmployeeID] int NULL,
[Date] date NULL,
[TimeIn] time NULL,
[TimeOut] time Nul
log_date log_time emp_id emp_name log_action
2013-06-16 08:48:48.0000000 30170 Sarah John 1
2013-06-16 16:48:48.0000000 30170 Sarah John 4
2013-06-15 07:18:48.0000000 30160 Paula Fred 1
2013-06-15 16:38:48.0000000 30160
如何编写对查询中的每个不同结果执行的查询?为了解释,我运行一个查询来查找日期范围内的所有"punch_periods“:
$search_date = mysql_query("SELECT punch_period
FROM timecards
WHERE emp_id ='1' &&
punch_time BETWEEN '$start' AND '