2017-04-20 4 views
0

MySQLデータベースでは、ワーククロックとクロックアウト時間を格納する次の表があります。私は、データベースのDATETIMEの差を自動的に計算するために時間欄を使いたいと思います。私はMySQLデータベースにDATETIMEの差を自動的に計算するカラムを持っています

ID Clock In Clock Out Hours 
1 10:00  17:00  7 
2 09:00  16:00  7 
3 09:00  15:30  6.5 

結果をプレビューするために使用するSQL文イムです:私はちょうど私が自動投入するためにDBに時間列にこれを適用する方法を知りたい

SELECT TIMESTAMPDIFF(hour, `clock_in`, `clock_out`) as `difference` FROM records 

レコードが作成されるとき。

+1

このテーブルでトリガーを使用できます。 https://dev.mysql.com/doc/refman/5.7/en/triggers.html https://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html – JustOnUnderMillions

+1

これは良いようです別の列に情報を複製するのではなく、*ビュー*のケースを使用します。 – David

+2

[MySQL 5.7は計算カラム( "Generated Columns")をサポート](https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html) –

答えて

0

あなたが欲しいものを行う最も簡単な方法は、ビューを使用することです:

CREATE VIEW v_records AS 
    SELECT v.*, TIMESTAMPDIFF(hour, `clock_in`, `clock_out`) as `difference` 
    FROM records; 

これは便利それがをを使用される値を計算します。これにより、最新のデータが計算に使用されます。

ファンタジーにしたい場合は、トリガーを書くことができます。ただし、更新と挿入の両方に対処する必要があります。

関連する問題