プロが教える店舗&オフィスのセキュリティ対策術

オーバーラップする時間を求めるSQLを教えてください。
MS SQL Serverを使用しています。

例:12時~18時が対象
値が10時~19時となっている場合は、6時間オーバーラップしています。
値が13時~15時となっている場合は、2時間オーバーラップしています。
値が10時~13時となっている場合は、1時間オーバーラップしています。
値が9時~12時となっている場合は、オーバーラップしている時間はありません。

A 回答 (3件)

そういうSQLは目にしたことありません。

    • good
    • 0
この回答へのお礼

分からないことを分からないと回答する必要ないです。

お礼日時:2021/03/01 18:14

計算としては、(0時以降に始まり24時までに終了することを前提とするなら)オーバーラップの終了時間を対象と値の早い方、開始時間を対象と値の遅い方にして、その差を求めればよいとは思いますが、オーバーラップがない場合にマイナスになってしまうこともありますので、その場合は別途対応が必要ですね。

    • good
    • 0

設定時間はじめ=h1、終わり=h2


検索時間はじめ=h3、終わり=h4
とすると、
t1=h2-h1、t2=h2-h3、t3=h4-h1、t4=h4-h3で
最も小さい数がオーバーラップ時間
(ただしマイナスがある場合は0)
    • good
    • 0
この回答へのお礼

ありがとうございます!!

お礼日時:2021/03/01 18:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!