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

MySQLで時差を計算しますが、イベントを考慮に入れます

    開始ごとに、クエリを使用して次の終了時刻を取得します。次に、差を計算します。ロジックは次のようなものです:

    select t.*, timestampdiff(second, dt, next_dt)
    from (select t.*, addtime(t.date, t.time) as dt,
                 (select addtime(t2.date, t2.time)
                  from table t2
                  where addtime(t2.date, t2.time) > addtime(t.date, t.time) and
                        status = 'end'
                  order by addtime(t2.date, t2.time) desc
                  limit 1
                 ) as next_dt
          from table t
          where status = 'start'
         ) t
    

    これは、日付と時刻の列が適切なデータベースタイプ(date)を使用して保存されていることを前提としています。 およびtime )。それらを別のものとして保存する場合は、それらを内部形式に変換するためのロジックを不必要に複雑にする必要があります。



    1. MySQLインジェクション-SELECTクエリを使用して更新/削除します

    2. PostgreSQLのタイムスタンプに基づく移動平均

    3. PHPの致命的なエラー:未定義の関数mssql_connect()の呼び出し

    4. [最初の文字がBで始まる]すべてを選択します