【问题标题】:How to extract hour for MySQL FROM_UNIXTIME() results?如何为 MySQL FROM_UNIXTIME() 结果提取小时?
【发布时间】:2013-02-26 02:01:58
【问题描述】:

我有一列包含 INT 时间戳中的测量时间,我需要按一小时的时间间隔对数据进行分组。我已经发现了 MySQL 函数 FROM_UNIXTIME(),但是 MySQL 中有没有内部工具可以从这个函数的结果中提取小时?

【问题讨论】:

    标签: mysql sql datetime


    【解决方案1】:

    我想你的意思是FROM_UNIXTIME

    GROUP BY
        DATE_FORMAT(FROM_UNIXTIME(time_column), '%Y %m %d %H'))
    

    【讨论】:

      【解决方案2】:
      SELECT *
      FROM table
      GROUP BY DATE_FORMAT(FROM_UNIXTIME(time_col_name), '%H')
      

      查看 MySQL 的 Date documentation

      编辑:

      请改用DATE_FORMAT 来可靠地确定返回的小时格式。见DATE_FORMAT documentation注意:格式 %H 将返回格式为 00、01、... 23 的小时值。

      【讨论】:

      • 尝试将其移至SELECT 子句并引用别名。
      【解决方案3】:

      类似:

      SELECT HOUR(FROM_UNIXTIME(unixCol))
      FROM tbl
      GROUP BY HOUR(FROM_UNIXTIME(unixCol))
      

      HOUR 将提取 UNIX 时间戳转换为日期后的小时。

      See the documentation

      【讨论】:

        【解决方案4】:

        尝试将该数据库数据作为日期放入变量中,然后回显它。

        $timestamp = strtotime($db_data);
        echo date("m-d-Y", $timestamp);
        

        【讨论】:

          【解决方案5】:

          我知道这是在最初的问题之后几年,但如果您正在处理更大的数据集,由于为查询集中的每一行调用 2 个函数,这可能需要更长的时间来执行。

          通过使用一些模运算,我设法节省了几秒钟的时间

          GROUP BY FLOOR(time_col/(60*60) MOD 24)
          

          希望这会有所帮助:)

          【讨论】:

            猜你喜欢
            • 2013-08-19
            • 2018-03-08
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2023-03-11
            • 2017-06-26
            • 2020-07-19
            • 2014-01-25
            相关资源
            最近更新 更多