全球顶尖设计网站,扁平化设计风格网站,微网站搭建教程,内容导购网站模板转载自 MySQL datediff()函数
MySQL DATEDIFF函数介绍
MySQL DATEDIFF函数计算两个DATE#xff0c;DATETIME或TIMESTAMP值之间的天数。
MySQL DATEDIFF函数的语法如下#xff1a;
DATEDIFF(date_expression_1,date_expression_2);DATEDIFF函数接受两个任何有效日期或日…转载自 MySQL datediff()函数
MySQL DATEDIFF函数介绍
MySQL DATEDIFF函数计算两个DATEDATETIME或TIMESTAMP值之间的天数。
MySQL DATEDIFF函数的语法如下
DATEDIFF(date_expression_1,date_expression_2);DATEDIFF函数接受两个任何有效日期或日期时间值的参数。如果您传递DATETIME或TIMESTAMP值则DATEDIFF函数仅将日期部分用于计算并忽略时间部分。
DATEDIFF函数在许多情况下很有用例如您可以计算产品需要发送给客户的间隔时间。
MySQL DATEDIFF示例
我们来看一下使用DATEDIFF函数的一些例子。
示例-1
mysql SELECT DATEDIFF(2017-08-17,2017-08-17);
-------------------------------------
| DATEDIFF(2017-08-17,2017-08-17) |
-------------------------------------
| 0 |
-------------------------------------
1 row in set示例-2
mysql SELECT DATEDIFF(2017-08-17,2017-08-08);
-------------------------------------
| DATEDIFF(2017-08-17,2017-08-08) |
-------------------------------------
| 9 |
-------------------------------------
1 row in set示例-3
mysql SELECT DATEDIFF(2017-08-08,2017-08-17);
-------------------------------------
| DATEDIFF(2017-08-08,2017-08-17) |
-------------------------------------
| -9 |
-------------------------------------
1 row in set请参阅示例数据库(yiibaidb)中的以下orders表其结构如下 -
mysql desc orders;
--------------------------------------------------------
| Field | Type | Null | Key | Default | Extra |
--------------------------------------------------------
| orderNumber | int(11) | NO | PRI | NULL | |
| orderDate | date | NO | | NULL | |
| requiredDate | date | NO | | NULL | |
| shippedDate | date | YES | | NULL | |
| status | varchar(15) | NO | | NULL | |
| comments | text | YES | | NULL | |
| customerNumber | int(11) | NO | MUL | NULL | |
--------------------------------------------------------
7 rows in set假设使用DATEDIFF函数计算所需日期和订单发货日期之间的天数如下所示
SELECT orderNumber, DATEDIFF(requiredDate, shippedDate) daysLeft
FROMorders
ORDER BY daysLeft DESC;执行上面查询语句得到以下结果 -
-----------------------
| orderNumber | daysLeft |
-----------------------
| 10409 | 11 |
| 10410 | 10 |
| 10105 | 9 |
| 10135 | 9 |
| 10190 | 9 |
**** 此处省略了一大小波数据 ********
| 10423 | NULL |
| 10424 | NULL |
| 10425 | NULL |
-----------------------
327 rows in set以下语句将获取状态正在处理(In Process)的所有订单并计算订单日期和所需日期之间的天数
SELECT orderNumber,DATEDIFF(requiredDate, orderDate) remaining_days
FROMorders
WHEREstatus In Process
ORDER BY remaining_days;执行上面查询语句得到以下结果 -
-----------------------------
| orderNumber | remaining_days |
-----------------------------
| 10426 | 5 |
| 10423 | 6 |
| 10425 | 7 |
| 10421 | 8 |
| 10424 | 8 |
| 10420 | 9 |
| 10422 | 12 |
-----------------------------
7 rows in set要计算周或月作为间隔时间可以将DATEDIFF函数的返回值除以7或30如下查询语句
SELECT orderNumber,ROUND(DATEDIFF(requiredDate, orderDate) / 7, 2) as weeks,ROUND(DATEDIFF(requiredDate, orderDate) / 30,2) as months
FROMorders
WHEREstatus In Process;执行上面查询语句得到以下结果 -
----------------------------
| orderNumber | weeks | months |
----------------------------
| 10420 | 1.29 | 0.3 |
| 10421 | 1.14 | 0.27 |
| 10422 | 1.71 | 0.4 |
| 10423 | 0.86 | 0.2 |
| 10424 | 1.14 | 0.27 |
| 10425 | 1 | 0.23 |
| 10426 | 0.71 | 0.17 |
----------------------------
7 rows in set请注意ROUND函数用于舍入结果。
在本教程中您已经学习了如何使用MySQL DATEDIFF函数来计算两个日期值之间的天数。