Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Desain untuk mewakili check-in dan check-out karyawan

Saya tahu posting ini sudah usang tetapi, ini untuk seseorang yang masih mencari solusi:

Struktur Tabel Kehadiran

id              | int
employee_code   | varchar
status          | enum('check_in','check_out')
created         | datetime

Data

id  employee_code   status          created

1   EMP0001         check_in        2016-08-20 09:30:30
2   EMP0001         check_out       2016-08-20 18:15:00
3   EMP0002         check_in        2016-08-21 14:52:48
4   EMP0002         check_out       2016-08-21 21:09:18

Kueri

SELECT 
  A1.employee_code,
  A1.created AS check_in_at,
  A2.created AS check_out_at,
  TIMEDIFF(A2.created, A1.created) AS total_time 
FROM
  tbl_attendances AS A1 
  INNER JOIN tbl_attendances AS A2 
    ON A1.employee_code = A2.employee_code 
    AND DATE(A1.created) = DATE(A2.created) 
WHERE 1 = 1 
  AND A1.status = 'check_in' 
  AND A2.status = 'check_out' 
  AND DATE(A1.created) BETWEEN '2016-08-20' 
  AND '2016-08-21' 
  AND DATE(A2.created) BETWEEN '2016-08-20' 
  AND '2016-08-21' 
ORDER BY A1.created DESC

Hasil

employee_code   check_in_at            check_out_at           total_time

EMP0002         2016-08-21 14:52:48    2016-08-21 21:09:18    06:16:30
EMP0001         2016-08-20 09:30:30    2016-08-20 18:15:00    08:44:30

Untuk karyawan tertentu tambahkan AND A1.employee_code = 'EMP0001' di WHERE klausa



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Memasukkan beberapa baris dari formulir php ke dalam database

  2. Lewati variabel PHP ke modal bootstrap

  3. Bagaimana cara mendapatkan hari pertama setiap bulan yang sesuai di mysql?

  4. Memeriksa sumber daya hasil MySQL yang valid

  5. Bagaimana cara memilih jumlah baris terbatas untuk setiap kunci asing?