我想查看特定出勤表的迟到者和早入者。我的出勤表如下:
╔═════════════╦═════════════╦══════════╗
║ date_record ║ checkinTime ║ Emp_code ║
╠═════════════╬═════════════╬══════════╣
║ 2019-02-01 ║ 09:00:00 ║ p-01 ║
╠═════════════╬═════════════╬══════════╣
║ 2019-02-01 ║ 09:30:00 ║ p-02 ║
╠═════════════╬═════════════╬══════════╣
║ 2019-02-01 ║ 10:00:00 ║ p-03 ║
╠═════════════╬═════════════╬══════════╣
║ 2019-02-01 ║ 09:30:00 ║ p-04 ║
╚═════════════╩═════════════╩══════════╝
假设实际时间为09:00:00
,我想显示迟到30分钟的员工代码(Emp_code
)。如果我想这样检查以上内容:
select Emp_code from attendanceTable where checkinTime = ('09:00:00' + '00:30:00');
我如何在PostgreSQL中做到这一点?
答案 0 :(得分:1)
假设checkintime
被正确声明为time
列,只需添加an interval:
select *
from attendancetable
where checkintime = time '09:00:00' + interval '30 minutes';
但是您可能希望使用>=
而不是=
来包括到达的员工,例如迟了34分钟。
答案 1 :(得分:0)
我想更好的查询是:
从与会者的WHERE签到时间中选择*> = DATE_TRUNC('DAY',checkintime)+间隔'9小时'+间隔'30分钟'
因此,使用此功能可以获得所有日期的预期结果。