【问题标题】:How can I get the total hour for the datetime range如何获取日期时间范围的总小时数
【发布时间】:2015-10-20 09:31:27
【问题描述】:

如何根据我的日期时间范围计算总小时数

如果我有这个接受的日期范围2015-09-07 06:00:00 - 2015-09-11 22:00:00

我想仅为用户获取每天从 06:00:00 到 22:00:00 的小时数,然后对所有小时求和。

这是我的示例数据

+----+---------+--+---------------------+---------------------+--+
|    |         |  |                     |                     |  |
+----+---------+--+---------------------+---------------------+--+
| id | user_id |  | start_time          | end_time            |  |
| 1  | 24      |  | 2015-09-07 07:10:01 | 2015-09-07 10:20:20 |  |
| 2  | 24      |  | 2015-09-07 12:10:00 | 2015-09-07 15:00:00 |  |
| 3  | 24      |  | 2015-09-07 16:00:00 | 2015-09-07 22:20:20 |  |
| 4  | 24      |  | 2015-09-07 23:25:20 | 2015-09-08 05:00:00 |  |
+----+---------+--+---------------------+---------------------+--+  

提前谢谢你。

【问题讨论】:

  • 将此 TIME_TO_SEC(TIMEDIFF(end_time, end_time))/3600 用作小时

标签: mysql


【解决方案1】:

只需使用函数TIMESTAMPDIFF 几个小时:

http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_timestampdiff

示例:

SELECT TIMESTAMPDIFF(HOUR, start_time, end_time) 
           as `difference` FROM timeattendance WHERE user_id = 24

【讨论】:

  • 但我只接受 06:00:00 - 22:00:00 的日期,日期为 2015-09-07 - 2015-09-11
  • 但是我该如何放置我只会从 2015-09-07 到 2015-09-11 查询的 where 子句,然后在 06:00:00 - 22:00:00 的时间里,我尝试了您的解决方案,它给出了几个小时,但最后一行仍在计数
  • 最后一行的 start_time 是23:25:20 它不应该被计算,因为我只接受到 22:00:00
  • 你想计算几小时? start end end time的区别?
  • 是开始时间和结束时间的差异。例如我想查询这个日期范围'2015-09-07 06:00:00'到'2015-09-11 22:00:00',我想计算用户= 24范围内的小时数跨度>
【解决方案2】:

使用 MySQL TIME_TO_SECTIMEDIFF 函数

Select TIME_TO_SEC(TIMEDIFF(end_time, start_time))/3600 as hours from table 

【讨论】:

    猜你喜欢
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 2020-10-09
    • 1970-01-01
    • 2018-09-15
    • 2016-07-23
    相关资源
    最近更新 更多