MySQL中两个时间戳「以秒为单位」之间的差异?

介绍

在MySQL中,计算两个时间戳之间的差异是一项常见的任务。时间戳是指从某个固定时间点开始到当前时间的秒数,也称为Unix时间戳。

使用UNIX_TIMESTAMP函数获取时间戳

在MySQL中,可以使用UNIX_TIMESTAMP函数来获取时间戳。

SELECT UNIX_TIMESTAMP('2021-11-10 14:30:00');

上述语句将返回“1636534200”,这是从Unix纪元开始到2021年11月10日14:30:00之间的秒数。

计算时间戳之间的差异

计算两个时间戳之间的差异,可以将它们相减。

SELECT UNIX_TIMESTAMP('2021-11-10 14:30:00') - UNIX_TIMESTAMP('2021-11-10 12:00:00');

上述语句将返回“9000”,它代表了两个时间戳之间的差异,单位是秒。

使用TIMESTAMPDIFF函数获取时间差

在MySQL中,还可以使用TIMESTAMPDIFF函数来计算两个时间之间的差异。

SELECT TIMESTAMPDIFF(SECOND, '2021-11-10 12:00:00', '2021-11-10 14:30:00');

上述语句将返回“9000”,它代表了两个时间之间的差异,单位是秒。

要注意的是,TIMESTAMPDIFF函数的第一个参数指定了差异的单位,可以是SECOND、MINUTE、HOUR、DAY、WEEK、MONTH或YEAR。第二个和第三个参数是要比较的时间。

例子

假设有一个表,其中包含了员工的入职时间和离职时间。

CREATE TABLE employees (

id INT PRIMARY KEY,

name VARCHAR(50),

hire_date DATETIME,

termination_date DATETIME

);

INSERT INTO employees VALUES (1, 'Alice', '2020-01-01 09:00:00', '2021-08-31 17:00:00');

INSERT INTO employees VALUES (2, 'Bob', '2019-06-15 08:00:00', '2021-10-31 15:30:00');

INSERT INTO employees VALUES (3, 'Charlie', '2018-11-01 10:30:00', NULL);

计算在公司工作的时间

我们可以使用TIMESTAMPDIFF函数来计算每个员工在公司工作的时间。

SELECT name, TIMESTAMPDIFF(QUARTER, hire_date, COALESCE(termination_date, NOW())) AS worked_quarters

FROM employees;

上述语句将返回每个员工的姓名以及他们在公司工作的季度数。

筛选出工作时间超过一年的员工

我们可以使用WHERE子句来筛选出在公司工作超过一年的员工。

SELECT name, TIMESTAMPDIFF(YEAR, hire_date, COALESCE(termination_date, NOW())) AS worked_years

FROM employees

WHERE TIMESTAMPDIFF(YEAR, hire_date, COALESCE(termination_date, NOW())) >= 1;

上述语句将返回在公司工作超过一年的员工的姓名以及他们在公司工作的年数。

总结

在MySQL中计算两个时间戳之间的差异是一个常见的任务。可以使用UNIX_TIMESTAMP函数获取时间戳,也可以使用TIMESTAMPDIFF函数计算时间差。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

数据库标签