私は2つのサンプルのタイムエントリのMySQLの結果を持ってデータベース結果の時間部分を追加しますか?
など、月、ユーザが、週によってシステムで費やすどのくらいの時間を合計し、私のアプリケーションで機能を追加する$select = "SELECT TOTAL_HRS FROM timeclock WHERE USERNAME = '$sessuser' AND CLOCK_OUT BETWEEN '$dbpast' AND '$dbnow'";
をしようとしています: 00:00hr:04min:08s
および00:00hr:12min:52s
。ユーザーはもっと多くを持つことができます。
TOTAL_HRSここで私がこれまで持っているものだ、それは0
を返し、その上)(varchar型の列であるので、私は合計を置くとき:
while($row = $query->fetch_assoc()){
print_r($row);
$sanitized = preg_replace("/[^0-9:]+/", "", $row);
print_r($sanitized);
$joinarr = implode(':', $sanitized);
$parts = explode(':', $joinarr);
print_r($parts);
$zerodate = new DateTime('0000-01-01 00:00:00');
$addhrs += $parts[1];
$addmin += $parts[2];
print_r($addhrs);
$interval = $zerodate->add(new DateInterval('P' .$parts[0].'DT'.$parts[1].'H'.$parts[2].'M'.$parts[3].'S'));
$totalhrs = $interval->format('%D:%Hhr:%Imin:%Ss');
print_r($totalhrs);
}
私は返されたファンキーなジャンクを入手してください。0%Sat:%0012Sat, 01 Jan 0000 00:12:52 +0100:%001121:%st52
返信する必要があるもの:00:00hr:17min:00s
のようなものです。私はこれを保存する予定はなく、ページに表示したいだけです。
私はこれを理解する助けが必要です。私は良い方法があると確信しています。私は機能がそれほど素晴らしいわけではありません。または、jqueryを使用して結果を送信し、そこで処理する必要がありますか?どちらの側でDateTimeを処理する方が効率的ですか?助けが大いに評価されるだろう。ありがとう!
を与える
TIMEDIFF()
を使用している場合がありますかおそらく秒単位で、または開始時刻と終了時刻のタイムスタンプとして保存する方が簡単でしょう。 – chris85...私はそれを考えなかった。笑。データベースのDateTimeフィールドに開始時刻と終了時刻を格納してから、「セッション時間」を集計し、文字列として格納するように変換します。それらを文字列として表示したかったのです。 DateTimeとTimestampの違いは何ですか? – hnewbie
タイムスタンプは、1970年(現在は1510524424)から経過した秒数です。日付時刻は日付と時刻です。しかし、datetimeを減算する関数があります。 https://stackoverflow.com/questions/10907750/calculate-difference- between-two-datetimes-in-mysqlを参照してください。 'varchar'と数学は巨大な痛みになるでしょう、その道を行くことはありません。 – chris85