【发布时间】:2021-10-09 13:45:39
【问题描述】:
我有一个生成的列,如果随着时间的推移不为空,则计算输入和超时的时间差。
ALTER TABLE tbl_dtr
ADD COLUMN total_worked_hours FLOAT(2) AS (CASE
WHEN time_out = '' then 0
WHEN over_time_out = '' then 0
WHEN time_out <> '' then (TIMESTAMPDIFF(SECOND, time_in, time_out) / 3600)
WHEN over_time_out <> '' then ((TIMESTAMPDIFF(SECOND, time_in, time_out) / 3600) + (TIMESTAMPDIFF(SECOND, over_time_in, over_time_out) / 3600))
END);
这里的问题是total_worked_hours列会导致null,我不知道如何将AM/PM转换为时间戳来计算timestamdiff。
| id | date | time_in | time_out | over_time_in | over_time_out | total_worked_hours |
|---|---|---|---|---|---|---|
| 1 | 2021-08-04 | 08:35 AM | 06:51 PM | 07:05 PM | 11:58 PM | NULL |
【问题讨论】:
-
用您正在使用的数据库标记您的问题。
FLOAT(2)应该是什么? -
FLOAT(2) 是一种 total_worked_hours 类型,每行都会产生浮点值
标签: sql phpmyadmin mariadb