mysql两个时间(我有两个字段是datetime类型)相减返回两个时间的小时差,精确到小数点后两位应该怎么写

作者&投稿:辟恒 (若有异议请与网页底部的电邮联系)
mysql 中,计算2个datetime类型的字段,相减得到的分钟数~

now()-stime 得到的是minute * 100,这个数值的与分钟的单位换算是100=1分钟,超过60分钟这个数值无效。

得到时间差:
select (unix_timestamp(now())-unix_timestamp(stime))/60 from table_name where whew_condition;

mysql> select * from timeminus;
+----+---------------------+
| id | stime |
+----+---------------------+
| 1 | 2011-09-21 09:30:00 |
| 2 | 2011-09-21 11:30:00 |
| 3 | 2011-09-20 00:00:00 |
+----+---------------------+
3 rows in set (0.02 sec)

# 计算id=1与id=2的时间差(分钟)
mysql> select (unix_timestamp(a.stime)-unix_timestamp(b.stime))/60 from (select
* from timeminus where id=2) a inner join (select * from timeminus where id=1) b
;
+------------------------------------------------------+
| (unix_timestamp(a.stime)-unix_timestamp(b.stime))/60 |
+------------------------------------------------------+
| 120.0000 |
+------------------------------------------------------+
1 row in set (0.00 sec)

TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差。其结果的单位由interval 参数给出。该参数必须是以下值的其中一个:FRAC_SECOND 表示间隔是毫秒SECOND 秒MINUTE 分钟HOUR 小时DAY 天WEEK 星期MONTH 月QUARTER 季度YEAR 年SELECT '年' AS `日期部分`, TIMESTAMPDIFF(YEAR, '2012-12-21', CURRENT_TIMESTAMP()) AS `数值`UNION ALLSELECT '季度' AS `日期部分`, TIMESTAMPDIFF(QUARTER, '2012-12-21', CURRENT_TIMESTAMP()) AS `数值`UNION ALLSELECT '月' AS `日期部分`, TIMESTAMPDIFF(MONTH, '2012-12-21', CURRENT_TIMESTAMP()) AS `数值`UNION ALLSELECT '日' AS `日期部分`, TIMESTAMPDIFF(DAY, '2012-12-21', CURRENT_TIMESTAMP()) AS `数值`UNION ALLSELECT '周' AS `日期部分`, TIMESTAMPDIFF(WEEK, '2012-12-21', CURRENT_TIMESTAMP()) AS `数值`UNION ALLSELECT '时' AS `日期部分`, TIMESTAMPDIFF(HOUR, '2012-12-21', CURRENT_TIMESTAMP()) AS `数值`UNION ALLSELECT '分' AS `日期部分`, TIMESTAMPDIFF(MINUTE, '2012-12-21', CURRENT_TIMESTAMP()) AS `数值`UNION ALLSELECT '秒' AS `日期部分`, TIMESTAMPDIFF(SECOND, '2012-12-21', CURRENT_TIMESTAMP()) AS `数值`;+----------+----------+| 日期部分 | 数值 |+----------+----------+| 年 | 1 || 季度 | 4 || 月 | 12 || 日 | 388 || 周 | 55 || 时 | 9328 || 分 | 559737 || 秒 | 33584279 |+----------+----------+8 rows in set (0.00 sec)mysql> select CURRENT_TIMESTAMP();+---------------------+| CURRENT_TIMESTAMP() |+---------------------+| 2014-01-13 16:58:17 |+---------------------+1 row in set (0.00 sec)

在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位小数即可。



FORMAT(X,D)
将数字X的格式写为'#,###,###.##',以四舍五入的方式保留小数点后D位, 并将结果以字符串的形式返回。若D为0,则返回结果不带有小数点,或不含小数部分。
mysql>SELECT FORMAT(12332.123456, 4);
-> '12,332.1235'

ROUND(X) ROUND(X,D)
返回参数X,其值接近于最近似的整数。在有两个参数的情况下,返回X,其值保留到小数点后D位,而第D位的保留方式为四舍五入。若要接保留X值小数点左边的D位,可将D设为负值。
mysql>SELECT ROUND(-1.23);
-> -1
mysql>SELECT ROUND(-1.58);
-> -2
mysql>SELECT ROUND(1.58);
-> 2
mysql>SELECT ROUND(1.298, 1);
-> 1.3


MySQL中如何计算两个时间之间的时间差mysql中两时间的差值
除了使用TIMEDIFF函数外,我们还可以使用TIMESTAMPDIFF函数计算两个时间之间的时间差。该函数的用法如下:TIMESTAMPDIFF(unit, time1, time2)其中,unit是时间单位,可以是以下值之一:MICROSECOND、SECOND、MINUTE、HOUR、DAY、WEEK、MONTH、QUARTER、YEAR。time1和time2都是时间值或日期时间值。如果time1比...

MySQL查询两个时间段之间的交集mysql两时间段交集
MySQL内置函数中有一个函数叫做INTERVAL(),它可以用于判断两个时间段是否有交集。INTERVAL()函数需要三个参数,分别是时间段1的起始时间、时间段1的结束时间、以及时间段2的起始时间。若两个时间段有交集,INTERVAL()函数返回的值就是交集的时间段长度;若没有交集,返回的值就是负数。我们可以利用这个...

查询操作使用MySQL查询两个时间之间的数据mysql两时间
其中,使用BETWEEN操作符来查询指定时间段内的数据。我们可以通过WHERE子句来对`time`字段进行筛选,并使用BETWEEN来指定起始时间和结束时间,从而查询出所需的数据。4. MySQL查询两个时间之间的数据的代码实现 下面给出用Java代码实现MySQL查询两个时间之间的数据的示例:public static void mn(String[] arg...

MySQL时间比较的实现方法mysql中判断时间大小
SELECT * FROM table_name WHERE date_column > ‘2022-01-01’;3. 计算两个日期之间的天数:SELECT DATEDIFF(‘2022-01-01’, ‘2022-01-31’);4. 计算两个时间之间的秒数:SELECT TIME_TO_SEC(TIMEDIFF(’10:30:00′, ’08:00:0...

MySQL时间戳差查询方法详解mysql两时间戳差
其中,time1和time2分别表示两个时间点,ABS表示两个时间差的绝对值。MySQL时间戳差查询语句 在MySQL中,我们可以通过SELECT语句来查询时间戳差。SELECT语句的语法如下:SELECT ABS(UNIX_TIMESTAMP(time1) – UNIX_TIMESTAMP(time2)) AS timestamp_diff;其中,time1和time2分别表示两个时间点,...

比较MySQL时间比较优化计算任务mysql时间之间
MySQL中的不同时间比较方法:• DATEDIFF()函数:常用于计算两个日期之间的时间间隔 `SELECT DATEDIFF(now(), start_date)`• TIMEDIFF()函数:用于计算两个时间之间的时间差 `SELECT TIMEDIFF(now(), start_time)`• TO_SECONDS()函数:返回两个时间之间的差值,以秒为单位 `...

MySQL计算两个日期之间的天数方法mysql两日期天数
SELECT TIMESTAMPDIFF(DAY, ‘2019-01-01’, NOW())其中,DAY表示计算的时间间隔单位为天,’2019-01-01’为起始日期,NOW()函数表示当前日期。执行上述命令,MySQL会返回结果365。方法三:直接计算 除了使用MySQL自带的日期函数,我们还可以直接计算两个日期之间相差的天数。

MySQL时间比较技巧如何判断时间大小mysql比较时间大小
MySQL:SELECT TIMESTAMPDIFF(SECOND,’1970-1-1 08:00:00′,’2018-03-03 12:00:00′)该语句将计算两个指定的时间相差的秒数,结果是76552000,然后就可以将该结果与另一个datetime\/timestamp变量进行比较,从而判断两个变量之间的时间大小。记住,日期\/时间比较的基本思想...

MySQL计算时间差两日期相减得月份mysql两时间相减得月
表示两日期之间相差27个月。综上所述,MySQL提供了很多函数来计算两个日期之间的差异,但是在计算月份差异时需要特别注意每个月的天数不同。在上述介绍的代码中,我们使用了YEAR和MONTH函数提取日期中的年份和月份,然后通过简单的加减计算得出月份差值。需要根据实际情况进行调整,才能得到准确的计算结果。

MySQL处理时间数据技巧与实践mysql存储时间
这个函数可以根据两个日期(date_1和date_2)之间的天数来计算两个日期之间的时间差。另外,还可以使用DATE_ADD()和DATE_SUB()函数对日期进行增加或减少:这两个函数可以对date参数进行增加或减少interval时间单位。上面提到的这些MySQL函数,可以用于多种场景,帮助开发者更优雅地处理时间数据。例如,使用...

白朗县19828097130: SQL数据库中有两个字段indatatime(入库时间)updatatime(更新时间) 如何查询(更新时间)至(入库时间)大与10天的数据?
颜媛意施: select * from 表名 where TO_DAYS(updatatime) - TO_DAYS(indatatime) > 10;

白朗县19828097130: 一个mysql表可以有两个timestamp类型的字段吗 -
颜媛意施: 网上找到个解决方法(只适用于更新时间的初始值和创建时间一样,当然这个也说得过去): CREATE TABLE `test_table` ( `id` INT( 10 ) NOT NULL,`create_time` TIMESTAMP NOT NULL DEFAULT 0,`update_time` TIMESTAMP NOT NULL ...

白朗县19828097130: 我要查询2个时间段的数据sql语句,mysql数据库 -
颜媛意施: select * from table where (time > t1 and timet3 and time

白朗县19828097130: mysql中表会员卡中有两个字段分别表示卡有效开始时间和有效结束时间怎么超过该时间段就改写卡的状态为过期 -
颜媛意施: 用表更新,当然你的表中得有状态字段才行,比如tinyint(1) status, 0表示失效,1表示有效 update yourtable set status='0' where expire_date

白朗县19828097130: sql2000,表中有两个字段,都是时日期类型,一个是startdate,另一个是enddate,如何写where语句来控制 -
颜媛意施: 看你的日期范围(是否包含下一时间段的第一天):比如(包含): 2012-01-01 2013-01-01 2013-01-01 2015-01-01where aa >= startdate and a < enddate比如(不包含): 2012-01-01 2012-12-31 2013-01-01 2014-12-31where aa between startdate and enddate

白朗县19828097130: mysql时间段查询问题 -
颜媛意施: 你数据库就不该这样建,不应该使用两个字段,应该使用一个字段,类型可以是DATETIME,或者TIMESTAMP,下面是这两个类型的含义:DATETIME类型用在你需要同时包含日期和时间信息的值时.MySQL检索并且以'YYYY-MM-DD HH:MM:...

白朗县19828097130: mysql判断datetime字段在两个时间之间怎么写SQL -
颜媛意施: mysql判断datetime字段在两个时间之间怎么写SQL 直接使用>'2003-2-30';

白朗县19828097130: 关于mysql数据库的时间问题
颜媛意施: 可以设置为空 比如说 startDate :2013/01/01 endDate :2013/12/31 代表是2013年1月1日到12月31日 startDate :2013/01/01 endDate :(空) 则代表2013年1月1日以后 或 startDate :(空) endDate :2013/12/31 则代表到2013年12月31日为止 这个都随便你定义的,空也行,null也行

白朗县19828097130: sql表中有2个日期字段时间某天的记录查询 -
颜媛意施: --这是个很简单的问题下面这两种方法都是可以的:select * from table where getdate() between timeStart and timeEnd--或者 select * from table where getdate() >=timeStart and getdate()--table:为你想要查询的表,希望能帮到你!

白朗县19828097130: 求助mysql workbench里右下角那两个时间分别是什么意思 -
颜媛意施: 求助mysql workbench里右下角那两个时间分别是什么意思 MySQL Workbench不是数据库, 它是一个数据库管理工具,它的前身是DBDesigner. 首先,打开MySQL Workbench,双击打开即可.打开后的界面如下所示,然后选择数据库实例,...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网