4

時間 08:00:00-16:00:00 の間の時間のみをカウントする必要がある場合に、MySQL からフェッチされた 2 つの日時値の間の時間をカウントする最良の方法は何ですか?

たとえば、値が 2008-10-13 18:00:00 と 2008-10-14 10:00:00 の場合、時差は 02:00:00 になります。

SQLでそれを行うことができますか、それを行うための最良の方法は何ですか? 私はウェブサイトを構築していて、PHPを使用しています。

回答ありがとうございます。

編集:正確なことは、勤務時間中に「チケット」が特定の状態にあった時間を数えようとしているということです。時間は数週間のようです。

EDIT2: 実際の時差を数えるのは問題ありませんが、1 日あたりのオフタイム 00:00:00-08:00:00 と 16:00:00-00:00:00 を差し引きます。

-サムリ

4

3 に答える 3

10

TIMEDIFF関数_

TIMEDIFF() は、時間値として表現された expr1 – expr2 を返します。expr1 と expr2 は時刻または日時の式ですが、両方とも同じ型である必要があります。

mysql> SELECT TIMEDIFF('2000:01:01 00:00:00',
    ->                 '2000:01:01 00:00:00.000001');
        -> '-00:00:00.000001'
mysql> SELECT TIMEDIFF('2008-12-31 23:59:59.000001',
    ->                 '2008-12-30 01:01:01.000002');
        -> '46:58:57.999999'
于 2008-10-14T10:07:09.177 に答える
1

より複雑な SQL 文を使用するのではなく、独自のコードで違いを計算する必要があると思います。理由は次のとおりです。

  • その計算は、ビジネス ロジックの一部のようです。ビジネスコードの残りの部分と統合すると、保守が容易になるようです。
  • 多くの場合、データベースがボトルネックになるため、必要以上にロードしないでください。
于 2008-10-14T10:13:13.673 に答える
0

PHPで試してみたいと思うかもしれませんが、DBの方が速いと思います

差分を配列で返すコード

于 2008-10-14T10:10:32.900 に答える