我有四列的MySQL資料庫:日期,當起床時間,在上床睡覺的時間和小時睡覺。每天,日期和時間都是使用 php 通過 html 表單輸入的。我的目標是自動計算睡眠時間并僅使用資料庫插入它們。我過去已經實施了類似的事情DOUBLE AS,但在我目前的情況下,問題是我需要前一天的就寢時間來做到這一點。
所以我的問題是:在 mysql(或另一個 rdbms)中,有沒有辦法在插入新行時計算屬于表的不同列和不同行的兩個值的差異?
uj5u.com熱心網友回復:
我相信您正在尋找的是...
CREATE TRIGGER trigger_name
BEFORE UPDATE ON table_name
FOR EACH ROW
UPDATE table_name
SET hours_slept = HOUR(TIMEDIFF(time_when_gotten_up, time_when_gone_to_bed))
WHERE hours_slept IS NULL;
uj5u.com熱心網友回復:
使用@Musical Coder 的答案作為模板,我能夠使用子查詢和 DATE_SUB() 創建一個有效的解決方案:
CREATE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
SET NEW.hours_slept =
HOUR(TIMEDIFF(NEW.sleep_end, (SELECT sleep_start FROM table_name WHERE day = DATE_SUB(NEW.day, INTERVAL 1 DAY))))
MINUTE(TIMEDIFF(NEW.sleep_end, (SELECT sleep_start FROM table_name WHERE day = DATE_SUB(NEW.day, INTERVAL 1 DAY)))) / 60;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/328746.html
