MySQL的DATEDIFF简介及实例

440 阅读4分钟

MySQL DATEDIFF

MySQL DATEDIFF简介

MySQL DATEDIFF用于查找指定日期之间的差异。DATEDIFF函数有两个参数;我们指定我们想找到差异的日期。这些参数是和。在DATEDIFF函数中,只有日期部分被计算,列中的时间部分将被忽略。我们可以使用DATEDIFF函数中的内置函数作为参数,例如CURDATE()。这里CURDATE()获取当前系统日期,并计算与指定的第二个参数的差异。

语法:

下面给出的是DATEDIFF的语法。

SELECT DATEDIFF (<Date argument 1>, <Date argument 2>);

在这里,上述语法被用来寻找指定日期之间的差异。

SELECT DATEDIFF (<COLUMN_NAME_1>, <COLUMN_NAME_2>) FROM TABLE_NAME;

这里,上述语法用于查找指定列日期之间的差异。

MySQL的DATEDIFF是如何工作的?

现在让我们看看DATEDIFF在MySQL中是如何工作的。

代码

select DATEDIFF( '2020-01-31 00:00:00', '2020-01-01 11:00:00') AS "DATE DIFFERENCE";

在上面的查询中,它返回它们之间的日期差。这里它返回30。这里只计算了日期部分,而时间部分被省略了。屏幕截图也是如此。

输出

MySQL DATEDIFF 1

代码

select DATEDIFF( '2020-01-31', '2020-01-01 11:00:00') AS "DATE DIFFERENCE";
/ * - - - DateDiff - - - * /

在上面的查询中,它返回它们之间的日期差。开始的日期参数没有时间部分,而后面的参数有时间部分。由于DateDiff会省略时间,所以即使我们执行后它也会返回30。这里只计算日期部分,而省略了时间部分。这张截图也是如此。

输出

MySQL DATEDIFF 2

代码

select DATEDIFF( '2020-01-31 12:00:78', '2020-01-01') AS "DATE DIFFERENCE";
/ * - - - DateDiff - - - * /

在上面的查询中,它返回它们之间的日期差。开始的日期参数有一个时间部分,而后面的参数没有时间部分。由于DateDiff会省略时间,所以即使我们执行后它也会返回30。这里只计算日期部分,而省略了时间部分。这张截图也是如此。

输出

MySQL DATEDIFF 3

在DATEDIFF()函数中使用CURDATE()

现在,让我们使用CURDATE()函数并尝试获得日期差。

代码

select DATEDIFF( CURDATE() , '2020-07-01 11:00:00') AS "DATE DIFFERENCE";
/ * - - - DateDiff - - - * /

这里我们在参数中提到了内置的函数,它返回系统的当前日期,并与第二个参数进行计算,然后返回输出。

输出

CURDATE () function

**注意:**这里,DATEDIFF的输出将被指定为日期之间的 "天数 "差异。

MySQL DATEDIFF的例子

现在让我们看看DATEDIFF如何在表列上工作。

让我们创建一个表,如下所示。

代码

CREATE TABLE DUE_CUSTOMERS
(
CUST_ID INT,
INITIATION_DATE DATETIME,
DUE_DATE datetime
);

上面的表包含了关于到期日待定的客户的数据。这可以计算为CURDATE() - DUE_DATE。

让我们把下面的行插入到上面的表中。

代码

INSERT INTO DUE_CUSTOMERS VALUES ( 1, '2020-01-01 12:00:00', '2020-02-01 12:00:00' );
INSERT INTO DUE_CUSTOMERS VALUES ( 2, '2019-03-01 12:00:00', '2019-05-01 12:00:00' );
INSERT INTO DUE_CUSTOMERS VALUES ( 3, '2019-08-01 12:00:00', '2020-02-01 12:00:00' );
INSERT INTO DUE_CUSTOMERS VALUES ( 4, '2019-06-01 12:00:00', '2020-01-01 12:00:00' );
INSERT INTO DUE_CUSTOMERS VALUES ( 5, '2020-02-01 12:00:00', '2020-04-01 12:00:00' );
INSERT INTO DUE_CUSTOMERS VALUES ( 6, '2020-03-01 12:00:00', '2020-07-01 12:00:00' );
INSERT INTO DUE_CUSTOMERS VALUES ( 7, '2019-09-01 12:00:00', '2020-02-01 12:00:00' );
INSERT INTO DUE_CUSTOMERS VALUES ( 8, '2020-01-01 12:00:00', '2020-08-01 12:00:00' );
select * from DUE_CUSTOMERS;

输出

MySQL DATEDIFF 5

现在让我们对上述表格执行DATEDIFF函数。

例子 #1

在这里,我们计划获得已经违反到期日的客户。正值表示该客户仍有那么多天的时间来违反到期日。如果数值为负值,则表明该客户已经违反了所述天数的规定。

代码。

SELECT *, datediff(DUE_DATE, CURDATE()) AS BREACHED_COUNT_OF_DAYS FROM DUE_CUSTOMERS; / * - - - DateDiff - - - * /

输出

get the customers who have breached the due_date

例子 #2

这里的数值是负值,意味着客户已经违反了到期日。现在,最后一条记录有一个负值,这意味着客户还没有违反到期日。

我们可以得到给客户的到期时间的长度。

代码

SELECT *, datediff( DUE_DATE, INITIATION_DATE ) AS Duration FROM DUE_CUSTOMERS;
/ * - - - DateDiff - - - * /

上面的查询得到给客户的时间长度 DUE_DATE - INITIATION_DATE。

输出

negative values means that customer has breached the due date

在这里,时间部分已经从上述列数据中省略了。只有日期的差异从上述表列中被计算出来。