2016-04-20 15 views
3

他の人がインストールしたシステムにクエリを書いているので、ここでテーブルを変更することはできません。SQL静的な日付の夜間の計算時間

問題: 私は日付、timeINとtimeOUTを持っているテーブルを持っています 次のレコードを取る;

 date    |  timeIN  | timerOUT 
------------------------------------------------- 
2016-01-01 00:00:00.00 | 2000-01-01 07:00 | 2000-01-01 15:00  DATEDIFF = 8H 
2016-01-02 00:00:00.00 | 2000-01-01 07:00 | 2000-01-01 15:00  DATEDIFF = 8H 
2016-01-05 00:00:00.00 | 2000-01-01 23:00 | 2000-01-01 07:00  DATEDIFF = -16H 

レコード番号3からDATEDIFF = 8Hを取得するにはどうすればよいですか? ここでの問題は、すべてのtimeINスタンプとtimeOUTスタンプが同じダミー日付を持つことです。

+1

なぜこの質問が投票されたのですか?この質問については何が特別ですか? – KumarHarsh

答えて

4

あなたはDATEDIFF関数内CASE表現を使用することができます:それはtimeIn未満かどう

SELECT 
    Diff = 
     DATEDIFF(
      HOUR, 
      timeIn, 
      CASE 
       WHEN timeOut < timeIn THEN DATEADD(DAY, 1, timeOut) 
       ELSE timeOut 
      END 
     ) 
FROM tbl 

これはtimeOutに一日を追加します。