MySQL - ブレークを除いて2つの日付の間の正味時間差を計算しますか? -- sql フィールド と mysql フィールド と time フィールド 関連 問題

MySQL - Calculate the net time difference between two date-times while excluding breaks?












5
vote

問題

日本語

MySQLクエリでは、 timediff / time_to_sec 関数を使用して2つの日付から合計分を計算しています。

例えば:

<事前> <コード> 2010-03-23 10:00:00 - 2010-03-23 08:00:00 = 120 minutes

選択した時間範囲内に発生する断念は除外されます。

例えば:

<事前> <コード> 2010-03-23 10:00:00 - 2010-03-23 08:00:00 - (break 08:55:00 to 09:10:00) = 105 minutes

ネストされたIFステートメントの長いリストに頼ることなくこれを行うための良い方法はありますか?

update1:​​

明確にする - 私は、特定のタスクを達成するためにユーザーがどのくらいかかる時間を計算しようとしています。彼らがコーヒーを取り入れるならば、その期間は除外される必要がある必要があります。コーヒーブレークは固定時間です。

英語

In a MySQL query I am using the timediff/time_to_sec functions to calculate the total minutes between two date-times.

For example:

2010-03-23 10:00:00 - 2010-03-23 08:00:00 = 120 minutes 

What I would like to do is exclude any breaks that occur during the selected time range.

For example:

2010-03-23 10:00:00 - 2010-03-23 08:00:00 - (break 08:55:00 to 09:10:00) = 105 minutes 

Is there a good method to do this without resorting to a long list of nested IF statements?

UPDATE1:

To clarify - I am trying to calculate how long a user takes to accomplish a given task. If they take a coffee break that time period needs to be excluded. The coffee breaks are a at fixed times.

</div
        
   
   

回答リスト

10
 
vote
vote
ベストアンサー
 

時刻中に発生するすべての休憩を合計してから、TimeDIFF / time_to_sec関数

の結果に差し引きます。 <事前> <コード> MockedHealthCheck0

この構造を想定して:

<事前> <コード> MockedHealthCheck1

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

<事前> <コード> MockedHealthCheck2
 

sum all your breaks that occur during the times, and then subtract to the result of the timediff/time_to_sec function

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 

Assuming this structure :

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

You can calculate it with next query:

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 
</div
 
 
       
       

関連する質問

0  MDX SSAS:「週の供給」計算  ( Mdx ssas weeks of supply calculation ) 
私はMDXに新しい、私は供給前週間の計算を書いて立ち往生しています。 FWOSの定義は次のとおりです。 与えられた期間(それを呼び出すことができます)今後の販売期間(Xから)の推移をその期間(X)の在庫をカバーするように計画されています。 期間との視点を与える...

1563  C#で相対時間を計算する  ( Calculate relative time in c sharp ) 
特定の Form6 値、相対時間をどのように表示するには、次のように、次のように表示されます。 2時間前 3日前 月前 ...

17  特定のタイムゾーンの日の開始時に時間オブジェクトを取得する  ( Get time object at start of day in a particular time zone ) 
特定のタイムゾーンの特定の日付の日の開始を表すRuby Timeオブジェクトを取得できます。 ...

68  JavaScriptのユーザー入力から日付オブジェクトに時間を解析する方法  ( How to parse a time into a date object from user input in javascript ) 
私はユーザーがテキスト入力(カレンダーアプリケーション用)に日付を入力するためのフォームウィジェットに取り組んでいます。 JavaScript(JQuery FWIWを使用している)を使用して、ユーザーがJavaScript Date() オブジェクトに入る...

2  日付が渡されたかどうかを確認する方法  ( How to check if a date has passed ) 
日付が経過したかどうか、または将来の場合は確認しようとしています。 end_dateが渡された場合は、表示させたくありません。 end_dateはMySQLタイムスタンプです。現在、end_dateが経過したとしても、すべてのニュース記事が表示されています。こ...

1261  UNIXタイムスタンプをJavaScriptで時間に変換します  ( Convert a unix timestamp to time in javascript ) 
MySQLデータベースの中の時間をUNIXタイムスタンプとして保存していて、いくつかのJavaScriptコードに送信されます。どうやってそれからのタイムを取得しますか? たとえば、HH / MM / SS形式で。 ...

34  C#のTimespanに相当するJava  ( Java equivalent to cs timespan ) 
Javaは、34秒、5分などの期間を表すデータ型を持っています。 12月10日から12月11日までのような期間をカバーする期間のいくつかの実装を見ました。 私が必要とするものはC#のティスパンのようなものです。 ...

2  Probled Input Sizeの直接関数に再帰的に定義された入力サイズの関数をどのように変換することができますか?  ( How can i convert a function of input size defined recursively into a direct fun ) 
SEY iは、サイズnの入力を操作するアルゴリズムを持っていて、NがN-1にかかる時間の2倍になることを知っています。この単純な場合では、アルゴリズムが2 n 秒かかることを考えると、この単純な場合でも観察できます。 は、再帰的に定義された定義をより身近な...

0  WordPressブログ抜粋プレストレーション  ( Wordpress blog excerpt prestation ) 
私のWebサイトのこのページがどのようにしてロードするのに時間がかかりません。 michelepierri.it/blog このページではブログの抜粋の抜粋があります。 ホームページのような他のページ、ロードする時間が短くなります。 これを引き起こすことができ...

24  WindowsとLinuxでGMTを使用するようにMySQLを設定する方法  ( How to set mysql to use gmt in windows and linux ) 
私はGMTに格納時間にMySQLを取得しようとしている... のhttp:私はここにドキュメントを読みました: //dev.mysql.com/doc/refman/5.1/en/time-zone-support.htmlする オプションファイルのデフォ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有