sql >> データベース >  >> RDS >> Mysql

MySQL-休憩を除いて、2つの日時間の正味時間差を計算しますか?

    時間中に発生するすべての休憩を合計してから、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
    

    この構造を想定しています:

    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')
    

    次のクエリで計算できます:

    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. 句ごとにブール式を使用する

    2. MySQLのフィールドをインクリメントすることはアトミックですか?

    3. PythonMySQdbでレコードが存在するかどうかを確認する方法

    4. ユーザー'root'@'localhost'のSpringBootMySqlアクセスが拒否されました