mysql - 计算时间之间的小时数

标签 mysql sql

几天前我问了一个类似的问题,但没有完全得到我正在寻找的答案,特别是 SQL(问题是 Check if time in a database surpasses specific hour )。

基本上,我有以下查询:

    SELECT DAYNAME(arrivalTime) AS day, COUNT(*) AS count
    FROM bookings
    WHERE HOUR(arrivalTime) = 13
    AND DAYNAME(arrivalTime) = 'Monday'

这将计算周一 13:00 开始的预订的条目数。如何更改此设置以便计算从到达时间到接载时间的每个小时?

例如,如果我的到达时间 - 取货时间为 13:00 - 17:00,那么 13:00、14:00、15:00 和 16:00 都会将此视为条目。

有一些建议,但并没有真正实现。

编辑:

我正在制作的日历:

我的数据库:

示例和预期输出:

arrivalTime - pickupTime 

13 - 15 (hours 13, 14 are counted)

10 - 14 (hours 10, 11, 12, 13 are counted)

16 - 17 (hours 16 are counted)

13 - 17 (hours 13, 14, 15, 16 are counted)

11 - 12 (hours 11 are counted)

基本上,现在它只是计算arrivalTime为X的条目数。因此,如果我们有10个条目在周一13:00开始,那么在我链接的HTML表格上,接下来的数字将是10至 13:00。我想让每个小时都计算当时实际完成的预订数量。

为了方便直观,这里简单地放了一个狗窝。我们每小时检查一下狗舍里有多少只狗。因此,如果在 13:00 - 15:00 之间进行预订,则不应仅在 13:00 之前添加 +1,而且还应在时间重叠时添加 +1 到 14:00。也许比我想象的要复杂一点。

编辑2:

现在我的函数中有这个查询

SELECT DAYNAME(arrivalTime) AS day, COUNT(*) AS count
FROM bookings
WHERE HOUR(arrivalTime) = $hour
AND DAYNAME(arrivalTime) = '$dayname'

在 HTML 中,我像这样传递值

<td>
    <span>
        <p style="float:left">10:00</p>
        <p style="float:right">&nbsp;&nbsp;&nbsp;(<?php $var->get_CalendarCount($conn,10,'Monday'); ?>)</p>
    </span>
</td>

最佳答案

我想即使在特定时间没有预订,您也需要计算。您需要一个小时表来执行此操作。

SELECT H.day_name AS day, 
       Count(b.arrivaltime) AS count 
FROM   hour_table H 
       LEFT OUTER JOIN bookings B 
                    ON h.day_name = Dayname(arrivaltime) 
                       AND h.hours = Hour(arrivaltime) 
WHERE  h.hours BETWEEN 13 AND 17 
       AND h.day_name = 'Monday' 
GROUP  BY H.day_name

编辑:如果您不想计算 XY 之间的每个预订。然后你需要条件聚合。像这样的事情

Count(case when h.hours BETWEEN 13 AND 17 then b.arrivaltime .. end) AS count 

当问题中有足够的信息时可以添加完整答案

关于mysql - 计算时间之间的小时数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33984571/

相关文章:

php - 在单个 MySQL 中收集来自不同站点的记录

mysql - 这个mysql查询怎么做? (如何获取1行中的n个字段)

php - 在一个表中,查看某个 ID 是否有一天中每一分钟的行 - 如何优化此查询?

sql - 在导入到 SQL Server 之前自动删除 Excel 中的行

sql - 在数据库中移动行 'up and down'(SQL查询帮助)

sql - 计算一行中为 NULL 的属性数

php - 如何从PHP表列表中获取ID

mysql - 覆盖 MySQL 表中的数据

java - 将数据从文本表传输到普通表 hsqldb java

c++ - 如何使用 SQLConnect 或 SQLDriverConnect