Делаешь таблицу Посещаемость с полями: id сотрудника, дата, время входа not null, время выхода nullable.
Делаешь запрос с обновлением времени выхода
UPDATE attendance SET time_exit WHERE employee_id = :id AND attendance_date = :today RETURNING employee_id
Если вернулся null делаешь insert c временем входа и null вместо времени выхода.
Я пробовал парочку способов, этот мне показался самым простым.
Но в этой реализации и наверное в любой другой нужны некоторые усилия чтобы поддерживать данные в корректном состоянии