计算两个时间的差值

        Date endTime = activity.getEndTime();
        Date startTime = new Date();
        Calendar startCalendar = Calendar.getInstance();
        startCalendar.setTime(startTime);
        Calendar endCalendar = Calendar.getInstance();
        endCalendar.setTime(endTime);
        Long endSecond = endCalendar.getTimeInMillis();
        Long startSecond = startCalendar.getTimeInMillis();
        Long balance = endSecond-startSecond;
        Integer s_day = 60*60*24*1000;
        Integer s_hour = 60*60*1000;
        Integer s_min = 60*1000;
        Long day = balance/s_day;//还剩多少天
        Long hour = (balance-day*s_day)/s_hour;//还剩多少小时
        Long min = (balance-day*s_day-hour*s_hour)/s_min;//还剩多少分钟
        Long sec = (balance-day*s_day-hour*s_hour-min*s_min)/1000;//还剩多少秒
在 MySQL 中计算两个时间或日期之间的差值,可以使用 `TIMESTAMPDIFF`、`DATEDIFF` 和 `TIMEDIFF` 等函数,具体取决于所需的精度和单位。以下是详细的实现方法。 ### 使用 `TIMESTAMPDIFF` 函数 该函数允许按照指定的单位(如秒、分钟、小时、天、月、年等)计算两个日期/时间的差异。其语法如下: ```sql TIMESTAMPDIFF(unit, datetime1, datetime2) ``` 其中 `unit` 可以是以下值之一: - `SECOND`:以秒为单位 - `MINUTE`:以分钟为单位 - `HOUR`:以小时为单位 - `DAY`:以天为单位 - `MONTH`:以月为单位 - `YEAR`:以年为单位 例如,按“月”维度计算订单日期与当前日期的差值: ```sql WITH a AS ( SELECT *, TIMESTAMPDIFF(MONTH, orderDate, CURRENT_DATE()) AS DiffMonth FROM orders ) SELECT a.* FROM a WHERE a.DiffMonth = 200; ``` 按“年”维度查询: ```sql WITH a AS ( SELECT *, TIMESTAMPDIFF(YEAR, orderDate, CURRENT_DATE()) AS DiffYear FROM orders ) SELECT a.* FROM a WHERE a.DiffYear <= 14 ORDER BY a.DiffYear; ``` 按“天”维度查询: ```sql WITH a AS ( SELECT *, TIMESTAMPDIFF(DAY, orderDate, CURRENT_DATE()) AS DiffDay FROM orders ) SELECT a.* FROM a WHERE a.DiffDay <= 1400 ORDER BY a.DiffDay; ``` 上述示例中,`TIMESTAMPDIFF` 被用于不同粒度的时间计算,并且通过 CTE(Common Table Expression)组织数据[^1]。 ### 使用 `DATEDIFF` 函数 如果只需要计算两个日期之间相差多少天,可以使用 `DATEDIFF` 函数,其语法如下: ```sql DATEDIFF(date1, date2) ``` 它返回两个日期之间的天数差。例如: ```sql SELECT DATEDIFF('2023-01-01', '2022-12-25') AS DaysDifference; ``` 这将返回结果 `6`,表示两个日期相差 6 天。 ### 使用 `TIMEDIFF` 函数 当需要比较两个时间点的时分秒部分时,可以使用 `TIMEDIFF` 函数,其语法如下: ```sql TIMEDIFF(time1, time2) ``` 它返回两个时间之间的差异,格式为 `HH:MM:SS`。例如: ```sql SELECT TIMEDIFF('12:00:00', '10:30:00') AS TimeDifference; ``` 这将返回 `01:30:00`,表示两个时间相差 1 小时 30 分钟。 ### 示例代码整合 以下是一个综合示例,展示如何同时计算不同单位下的时间差: ```sql SELECT orderDate, NOW() AS currentDateTime, TIMESTAMPDIFF(SECOND, orderDate, NOW()) AS diffSeconds, TIMESTAMPDIFF(MINUTE, orderDate, NOW()) AS diffMinutes, TIMESTAMPDIFF(HOUR, orderDate, NOW()) AS diffHours, TIMESTAMPDIFF(DAY, orderDate, NOW()) AS diffDays, TIMESTAMPDIFF(MONTH, orderDate, NOW()) AS diffMonths, TIMESTAMPDIFF(YEAR, orderDate, NOW()) AS diffYears FROM orders; ``` 此查询将返回每个订单日期与当前时间之间的秒、分钟、小时、天、月和年的差值。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值