
在mysql中,这种计算可用TIMESTAMPDIFF函数来解决,但是解决过程中需要将数据多次加工。
1、创建测试表及插入测试数据:
create table test(time1 datetime,
time2 datetime)
insert into test values ('2015-04-03 17:01:09','2015-06-03 22:09:30')
2、目前要结算time2和time1的时间差,用如下语句:
select round(TIMESTAMPDIFF(second,time1,time2)/3600,2) from test结果如图:
解读:
首先,先用
select TIMESTAMPDIFF(second,time1,time2) from test来计算两个时间之间的秒数差。
然后,得到的结果除以3600,即为这两个时间之间的小时数。
最后因为要求保留2位小数,则通过round函数,四舍五入,取出2位小数即可。
select curDate(); #获取当前日期select curTime(); #获取当前时间select now(); #获取当前日期+时间
列举1个天数加减的例子,其他的看英文意思就可以理解了
select date_add(now(), interval 1 day); #当前日期天数+1
select date_add(now(), interval -1 day); #当前日期天数-1
select date_add(now(), interval 1 hour);
select date_add(now(), interval 1 minute);
select date_add(now(), interval 1 second);
select date_add(now(), interval 1 microsecond);
select date_add(now(), interval 1 week);
select date_add(now(), interval 1 month);
select date_add(now(), interval 1 quarter);
select date_add(now(), interval 1 year);
你需求讲得不明白,尽量把主要的表结构截图,业务逻辑说清楚。
避免负值的情况可以选择排序再相减(主要不清楚你的时间相减是怎么确定哪个减哪个)
只显示一条,那就group by,不过还是要看业务逻辑
TIMESTAMPDIFF函数,需要传入三个参数,第一个是比较的类型,可以比较FRAC_SECOND、SECOND、
MINUTE、 HOUR、 DAY、 WEEK、 MONTH、 QUARTER或 YEAR几种类型,第二个和第三个参数是待比较的两个时间,比较是后一个时间减前一个时间SELECT TIMESTAMPDIFF(YEAR,'2012-10-01','2013-01-13');
表示两者相差的年
以上就是关于mysql两个时间(我有两个字段是datetime类型)相减返回两个时间的小时差,精确到小数点后两位应该怎么写全部的内容,包括:mysql两个时间(我有两个字段是datetime类型)相减返回两个时间的小时差,精确到小数点后两位应该怎么写、怎样在MySQL中 *** 作日期、在MYSQL中,我需要每个dev_id的时间相减得到日期差值,但是会出现下一个dev_id的时间减去上一个dev_id等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)