如何在SQL查询中添加时间和时间间隔

时间:2019-07-08 06:33:10

标签: postgresql

我想查看特定出勤表的迟到者和早入者。我的出勤表如下:

╔═════════════╦═════════════╦══════════╗
║ 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中做到这一点?

2 个答案:

答案 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分钟'

因此,使用此功能可以获得所有日期的预期结果。