MySQL - 根据另外两个日期时间列自动更新总小时数差异

时间:2016-09-29 02:56:13

标签: mysql

我希望能够根据其他两个日期时间自动更新列totalHours。我知道我可以使用查询DATEDIFF()执行此操作,但我希望能够自动执行此操作,如果可能的话,会自动维护一个默认表达式,例如CURRENT_TIMESTAMPCURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP创建和更新时的数据库。

(我尝试将DATEDIFF()作为表达式但不起作用,这并不奇怪)

enter image description here

1 个答案:

答案 0 :(得分:1)

您应该使用VIEWVIRTUAL COLUMN,因为如果您立即存储,totalHours会使数据冗余。

视图

CREATE ALGORITHM = UNDEFINED VIEW `tableview` AS SELECT 
*, 
DATE_DIFF(startEndTime, startDateTime) AS totalHours
FROM blabla
;

这样,您将totalHours始终保持最新状态,而无需数据冗余。您可以重命名当前表(fi:到blabla_table)并使用表的当前名称(fi:VIEW)创建blabla。这样,您就不必使用TABLE更新所有查询,以便他们现在可以使用VIEW

虚拟列

totalHours DATE AS (DATE_DIFF(startEndTime, startDateTime))

请参阅http://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html

上的文档