
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。这里只计算了日期部分,而时间部分被省略了。屏幕截图也是如此。
输出

代码
select DATEDIFF( '2020-01-31', '2020-01-01 11:00:00') AS "DATE DIFFERENCE";
/ * - - - DateDiff - - - * /
在上面的查询中,它返回它们之间的日期差。开始的日期参数没有时间部分,而后面的参数有时间部分。由于DateDiff会省略时间,所以即使我们执行后它也会返回30。这里只计算日期部分,而省略了时间部分。这张截图也是如此。
输出

代码
select DATEDIFF( '2020-01-31 12:00:78', '2020-01-01') AS "DATE DIFFERENCE";
/ * - - - DateDiff - - - * /
在上面的查询中,它返回它们之间的日期差。开始的日期参数有一个时间部分,而后面的参数没有时间部分。由于DateDiff会省略时间,所以即使我们执行后它也会返回30。这里只计算日期部分,而省略了时间部分。这张截图也是如此。
输出

在DATEDIFF()函数中使用CURDATE()
现在,让我们使用CURDATE()函数并尝试获得日期差。
代码
select DATEDIFF( CURDATE() , '2020-07-01 11:00:00') AS "DATE DIFFERENCE";
/ * - - - DateDiff - - - * /
这里我们在参数中提到了内置的函数,它返回系统的当前日期,并与第二个参数进行计算,然后返回输出。
输出

**注意:**这里,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;
输出

现在让我们对上述表格执行DATEDIFF函数。
例子 #1
在这里,我们计划获得已经违反到期日的客户。正值表示该客户仍有那么多天的时间来违反到期日。如果数值为负值,则表明该客户已经违反了所述天数的规定。
代码。
SELECT *, datediff(DUE_DATE, CURDATE()) AS BREACHED_COUNT_OF_DAYS FROM DUE_CUSTOMERS; / * - - - DateDiff - - - * /
输出

例子 #2
这里的数值是负值,意味着客户已经违反了到期日。现在,最后一条记录有一个负值,这意味着客户还没有违反到期日。
我们可以得到给客户的到期时间的长度。
代码
SELECT *, datediff( DUE_DATE, INITIATION_DATE ) AS Duration FROM DUE_CUSTOMERS;
/ * - - - DateDiff - - - * /
上面的查询得到给客户的时间长度 DUE_DATE - INITIATION_DATE。
输出

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