【问题标题】:query for time in mysql between hours在mysql中查询小时之间的时间
【发布时间】:2017-12-05 07:53:00
【问题描述】:

如何获取 17:30 到明天 8:30 之间的行列表。

--------------------------------------
| id | user_id | action |     time    |
--------------------------------------
| 1  |   25    | enter  | 1512459905  
| 2  |   19    |  exit  | 1512125105  
| 3  |   31    | enter  | 1514581905  |
--------------------------------------

mysql 表有一个带有 unix 时间戳的时间列,我想得到一个 每天 17:30 到 8:30 之间的列表

【问题讨论】:

  • $t1 = "17:30"; $time1 = strtotime($t1); $t2 = "8:30"; $time2 = strtotime($t2); $sql = "SELECT id,user_id,action from table WHERE time BETWEEN $time1 AND $time2";

标签: php mysql sql


【解决方案1】:
SELECT TIME_TO_SEC(TIMEDIFF(FROM_UNIXTIME('time 1'), FROM_UNIXTIME('time 2')) AS 'time_diff_in_sec' FROM 'your_table';

这可以帮助: Mysql Get Time Diff

【讨论】:

    【解决方案2】:
    $dateStart=strtotime(date("Y-m-d 17:30:00"));
    $dateEnd=strtotime(date("Y-m-d 20:30:00"));
    

    这就是您如何将日期转换为 php 中的 unix 时间戳的方法。

    然后在您的查询中:

    SELECT * FROM my_table WHERE time BETWEEN '$dateStart' AND '$dateEnd'
    

    如果您不想每天手动执行脚本,您可以设置一个 cronjob 来为您执行此操作。

    【讨论】:

      【解决方案3】:

      您可以使用 TIME() 函数来提取数据时间的时间部分, 所以你可以做这样的事情: 选择 * FROM 表 t 其中 TIME(f.time) 在 '17:30:00' 和 '18:30:00' 之间

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多