mysql如何求时间差
这篇文章主要介绍了mysql如何求时间差,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。
mysql求时间差的方法:1、使用TIMEDIFF()函数,语法“TIMEDIFF(dt1, dt2);”;2、使用IMESTAMPDIFF()函数,语法“TIMESTAMPDIFF(unit,begin,end);”。
本教程操作环境:windows7系统、mysql8版本、Dell G3电脑。
mysql求时间差
timediff()函数 - 计算两个TIME或DATETIME值之间的差值。
timestampdiff()函数 - 计算两个DATE或DATETIME值之间的差值。
MySQL TIMEDIFF函数介绍TIMEDIFF
返回两个TIME
或DATETIME
值之间的差值。 请参阅TIMEDIFF
函数的以下语法。
TIMEDIFF(dt1,dt2);
TIMEDIFF
函数接受两个必须为相同类型的参数,即TIME
或DATETIME
。 TIMEDIFF
函数返回表示为时间值的dt1 - dt2
的结果。
因为TIMEDIFF
函数返回TIME
值,所以其结果被限制在从-838:59:59
到838:59:59
的TIME
值范围内。
MySQL TIMEDIFF函数示例
让我们举一个例子来计算两个时间值之间的差异。
mysql>SELECTTIMEDIFF('12:00:00','10:00:00')diff;+----------+|diff|+----------+|02:00:00|+----------+1rowinset
在这个例子中,我们计算了12:00:00
和10:00:00
之间的差值为:02:00:00
。
以下示例计算两个DATETIME
值之间的差异值:
mysql>SELECTTIMEDIFF('2010-01-0101:00:00','2010-01-0201:00:00')diff;+-----------+|diff|+-----------+|-24:00:00|+-----------+1rowinset
如果任一参数为NULL
,TIMEDIFF
函数将返回NULL
。
mysql>SELECTTIMEDIFF('2010-01-01',NULL)diff;+------+|diff|+------+|NULL|+------+1rowinset,1warning(0.00sec)
如果传递两个不同类型的参数,一个是DATETIME
,另一个是TIME
,TIMEDIFF
函数也返回NULL
。
mysql>SELECTTIMEDIFF('2010-01-0110:00:00','10:00:00')diff;+------+|diff|+------+|NULL|+------+1rowinsetMySQL TIMESTAMPDIFF函数简介
下面说明了TIMESTAMPDIFF
函数的语法。
TIMESTAMPDIFF(unit,begin,end);
TIMESTAMPDIFF
函数返回begin-end
的结果,其中begin
和end
是DATE
或DATETIME
表达式。
TIMESTAMPDIFF
函数允许其参数具有混合类型,例如,begin
是DATE
值,end
可以是DATETIME
值。 如果使用DATE
值,则TIMESTAMPDIFF
函数将其视为时间部分为“00:00:00”
的DATETIME
值。
unit
参数是确定(end-begin
)的结果的单位,表示为整数。 以下是有效单位:
MICROSECOND
SECOND
MINUTE
HOUR
DAY
WEEK
MONTH
QUARTER
YEAR
MySQL TIMESTAMPDIFF函数示例
以下示例将以月份值的形式返回2018-01-01
和2018-06-01
的差值:
mysql>SELECTTIMESTAMPDIFF(MONTH,'2018-01-01','2018-06-01')result;+--------+|result|+--------+|5|+--------+1rowinset
如果您希望看到差值,只需要将unit
参数从MONTH
更改为DAY
,如下所示:
mysql>SELECTTIMESTAMPDIFF(DAY,'2010-01-01','2010-06-01')result;+--------+|result|+--------+|151|+--------+1rowinset
以下语句返回两个DATETIME
值(以分钟为单位)的差异值:
mysql>SELECTTIMESTAMPDIFF(MINUTE,'2018-01-0110:00:00','2018-01-0110:45:00')result;+--------+|result|+--------+|45|+--------+1rowinset
请注意,TIMESTAMPDIFF
仅考虑与unit
参数相关的时间部分。 请参阅以下示例:
mysql>SELECTTIMESTAMPDIFF(MINUTE,'2018-01-0110:00:00','2018-01-0110:45:59')result;+--------+|result|+--------+|45|+--------+1rowinset
差值应该是45分59秒。 但是,我们将unit
参数传递为MINUTE
,因此,函数按预期返回45分钟。
如果使用SECOND
而不是MINUTE
,则TIMESTAMPDIFF
函数将考虑SECOND
部分,如以下示例所示:
mysql>SELECTTIMESTAMPDIFF(SECOND,'2018-01-0110:00:00','2018-01-0110:45:59')result;+--------+|result|+--------+|2759|+--------+1rowinset
注:45分59秒= 45×60 + 59(秒)= 2759秒
使用MySQL TIMESTAMPDIFF函数计算年龄
首先,我们创建一个名为persons
的新表,用于演示。
USEtestdb;CREATETABLEpersons(idINTAUTO_INCREMENTPRIMARYKEY,full_nameVARCHAR(255)NOTNULL,date_of_birthDATENOTNULL);
其次,向persons
表中插入一些行:
INSERTINTOpersons(full_name,date_of_birth)VALUES('JohnDoe','1990-01-01'),('DavidTaylor','1989-06-06'),('PeterDrucker','1985-03-02'),('LilyMinsu','1992-05-05'),('MaryWilliam','1995-12-01');
第三步,使用TIMESTAMPDIFF
来计算persons
表中每个人的年龄:
SELECTid,full_name,date_of_birth,TIMESTAMPDIFF(YEAR,date_of_birth,'2018-01-01')ageFROMpersons;
执行上面查询语句,得到以下结果 -
+----+---------------+---------------+-----+|id|full_name|date_of_birth|age|+----+---------------+---------------+-----+|1|JohnDoe|1990-01-01|28||2|DavidTaylor|1989-06-06|28||3|PeterDrucker|1985-03-02|32||4|LilyMinsu|1992-05-05|25||5|MaryWilliam|1995-12-01|22|+----+---------------+---------------+-----+5rowsinset
在此语句中,我们计算到2018-01-01
日为止的年龄。如果要计算当前年龄,可以通过NOW
函数替换字面值'2018-01-01'
,如下所示:
SELECTid,full_name,date_of_birth,TIMESTAMPDIFF(YEAR,date_of_birth,NOW())ageFROMpersons;
执行上面查询语句,得到以下结果 -
+----+---------------+---------------+-----+|id|full_name|date_of_birth|age|+----+---------------+---------------+-----+|1|JohnDoe|1990-01-01|27||2|DavidTaylor|1989-06-06|28||3|PeterDrucker|1985-03-02|32||4|LilyMinsu|1992-05-05|25||5|MaryWilliam|1995-12-01|21|+----+---------------+---------------+-----+5rowsinset
感谢你能够认真阅读完这篇文章,希望小编分享的“mysql如何求时间差”这篇文章对大家有帮助,同时也希望大家多多支持亿速云,关注亿速云行业资讯频道,更多相关知识等着你来学习!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。