2017-04-20 90 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語句IM是:

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

這聽起來很不錯用於* view *的用例,而不是在另一列中複製信息。 – David

+2

[MySQL 5.7支持計算列(「生成列」)](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; 

這樣可方便地計算出的值,當它是使用。這確保了最近的數據被用於計算。

如果你想得到花哨,你可以寫一個觸發器。但是,您需要處理更新和插入。