Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL - Tính chênh lệch thời gian thực giữa hai ngày-giờ trong khi loại trừ thời gian nghỉ?

tổng tất cả các ngắt của bạn xảy ra trong khoảng thời gian, sau đó trừ vào kết quả của hàm timediff / time_to_sec

SELECT TIME_TO_SEC(TIMEDIFF('17:00:00', '09:00:00')) -- 28800

SELECT TIME_TO_SEC(TIMEDIFF('12:30:00', '12:00:00')) -- 1800
SELECT TIME_TO_SEC(TIMEDIFF('10:30:00', '10:15:00')) -- 900

-- 26100

Giả sử cấu trúc này:

CREATE TABLE work_unit (
 id INT NOT NULL,
 initial_time TIME,
 final_time TIME
)
CREATE TABLE break (
 id INT NOT NULL,
 initial_time TIME,
 final_time TIME
)
INSERT work_unit VALUES (1, '09:00:00', '17:00:00')
INSERT break VALUES (1, '10:00:00', '10:15:00')
INSERT break VALUES (2, '12:00:00', '12:30:00')

Bạn có thể tính toán nó với truy vấn tiếp theo:

SELECT *, TIME_TO_SEC(TIMEDIFF(final_time, initial_time)) total_time
, (SELECT SUM(
 TIME_TO_SEC(TIMEDIFF(b.final_time, b.initial_time)))
  FROM break b 
  WHERE (b.initial_time BETWEEN work_unit.initial_time AND work_unit.final_time) OR (b.final_time BETWEEN work_unit.initial_time AND work_unit.final_time)
 ) breaks 
FROM work_unit



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. opencart - Làm cách nào để hiển thị thủ công một mô-đun bên trong tệp mẫu?

  2. Làm cách nào để lấy trường cuối cùng trong cơ sở dữ liệu Mysql với PHP?

  3. Mã hóa không xác định khi sử dụng df.to_sql () để ghi vào MySQL bằng pyodbc

  4. Nhận khoảng thời gian trong mysql

  5. Lỗi Mysql 'Có lỗi -1 từ công cụ lưu trữ'