将秒转换为人类可读的持续时间

2024-03-20

我如何最好地将 90060(秒)转换为字符串“25h 1m”?

目前我正在 SQL 中执行此操作:

SELECT 
  IF(
    HOUR(
      sec_to_time(
        sum(time_to_sec(task_records.time_spent))
      )
    ) > 0, 
    CONCAT(
      HOUR(sec_to_time(sum(time_to_sec(task_records.time_spent)))), 
      'h ', 
      MINUTE(sec_to_time(sum(time_to_sec(task_records.time_spent)))),
      'm'
    ), 
    CONCAT(
      MINUTE(sec_to_time(sum(time_to_sec(task_records.time_spent)))),
      'm'
    )
  ) as time
FROM myTable;

但我不确定这是最方便的方法:-)

我愿意接受关于在 SQL(与我已经做的不同)或 PHP 中执行此操作的建议。

EDIT:

所需字符串的示例:“5m”、“40m”、“1h 35m”、“45h”、“46h 12m”。


TIME_FORMAT(SEC_TO_TIME(task_records.time_spent),'%Hh %im')

文档是你的朋友:

  • http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

根据评论:

DROP FUNCTION IF EXISTS GET_HOUR_MINUTES;
CREATE FUNCTION GET_HOUR_MINUTES(seconds INT)
  RETURNS VARCHAR(16)

  BEGIN
  DECLARE result VARCHAR(16);
  IF seconds >= 3600 THEN SET result = TIME_FORMAT(SEC_TO_TIME(seconds),'%kh %lm');
  ELSE SET result = TIME_FORMAT(SEC_TO_TIME(seconds),'%lm');
  RETURN result;
  END

DELIMETER ;

Usage:

SELECT GET_HOUR_MINUTES(task_records.time_spent) FROM table
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

将秒转换为人类可读的持续时间 的相关文章

随机推荐

  • UITableView 自动尺寸无法正常工作

    我有一个表格视图 其中填充了来自 Firebase 的数据 但是 当使用自动尺寸调整表格视图大小时 某些文本会被截断 这是我的故事板 约束设置为顶部 底部 右侧和左侧 当没有大量文本时 它工作正常 如此处所示 但是 当我用大量文本填充单元格
  • 谷歌地图 API v3 - 最近的街景

    当某个地点无法使用街景时 我想找到最近的有街景的地点 我能想到的唯一办法就是 radius 0 noOfPoints 3 while radius lt 10 miles radius radius 0 2 miles points cal
  • Prism,用Unity连接Views和ViewModels,试图理解它

    使用 Unity 创建视图和视图模型 使用 Unity 作为依赖项注入容器类似于使用 MEF 基于属性的注入和基于构造函数的注入都是 支持的 主要区别在于这些类型通常是 在运行时没有隐式发现 相反 他们必须是 已向容器注册 通常 您在视图模
  • 如何让 QFileDialog 选择并返回多个文件夹[重复]

    这个问题在这里已经有答案了 我希望用户能够选择多个文件夹 然后将这些文件夹的路径存储在列表中 我怎样才能做到这一点 我当前的 QFileDialog 如下所示 str QtGui QFileDialog getExistingDirecto
  • C++ CLI 集合初始值设定项语法

    C CLI 支持此功能吗 我想在 C CLI 中执行类似以下 C 示例的操作 var dictionary new Dictionary
  • 适用于 Java 的最佳 CLI 解析器 [重复]

    这个问题在这里已经有答案了 哪种 Java CLI 解析器比其他解析器更易于使用且可扩展性更好 以下是一些最受欢迎的 它们的功能都很齐全 使用过前两个后我可以推荐它们 公共命令行界面 http commons apache org cli
  • 使用 FOS 用户捆绑包编辑用户配置文件

    我将 symfony 2 与 FOSUserBundle 一起使用 问题是当添加用户时 当前登录的用户配置文件将被当前添加的用户替换 然后当我尝试编辑其他用户配置文件时 唯一可编辑的是当前登录的用户配置文件用户 FOSUserBundle
  • 如何在数据库中存储目录/层次/树结构?

    如何在数据库中存储目录 层次结构 树结构 即MSSQL服务器 olavk 看起来你没有看到我自己的答案 我使用的方式比递归查询好得多 p p s This is http www developerfusion co uk show 463
  • 一次附加多个 pandas 数据框[重复]

    这个问题在这里已经有答案了 我试图找到某种方法一次附加多个 pandas 数据帧 而不是使用它们一一附加 df append df 假设有 5 个 pandas 数据框t1 t2 t3 t4 t5 我如何立即附加它们 相当于 df rbin
  • 您需要从工作树的顶层运行此命令

    我正在尝试安装多蒂斯尼普斯 http www vim org scripts script php script id 2715 当我输入 cd vim git submodule add https github com SirVer u
  • 在 Windows 中生成随机文件

    有谁有办法在 Windows 中生成随机数据文件吗 我想生成 50 000 个小 2K 文件作为示例 您可以在批处理循环中运行 fsutil 以创建任意大小的文件 fsutil file createnew filename extensi
  • 如何找到所有未选中的复选框?

    在 jQuery 中 如何找到所有 未选中 的复选框 checkbox checked 似乎我所有的复选框都是选中的 但我需要的是所有未选中的复选框 您使用 not http docs jquery com Selectors not se
  • 如何在 Node JS 中编写非阻塞 if 语句?

    我在 php 中有一个 if 语句 if isTrue db record exists id else 第一个条件是真 假布尔检查 第二个条件调用一个函数来查看数据库表中是否存在一行并返回 true 或 false 我想在 Node JS
  • “exec:”python“:在$ PATH中找不到可执行文件

    我在跑步Arduino 集成开发环境 1 8 12 on Ubuntu 18 04 4 LTS 我正在尝试编译 ESP32 相机模块的示例代码 Arduino IDE 上带有默认示例的标准相机模块 但出现此错误 我认为这不是 Arduino
  • 在 C# 中将字符串转换为泛型类型(基本类型或数组)

    我想将字符串转换为给定的泛型类型T 它可以是基本类型或字符串 例如int or string 或基本类型或字符串的数组 例如int or string 我有以下功能 T Str2Val
  • 使用 PHP 中的 REST API 在 SalesForce 中创建潜在客户

    在过去的几天里 我一直在尝试通过 SalesForce 的 REST API 创建潜在客户 但我一生都无法让它发挥作用 我能够毫无问题地获得访问令牌 但从那时起 就创建潜在客户而言 我绝对没有运气 我在所有文档中不断看到 curl http
  • PWM DMA 到整个 GPIO

    我有一个 STM32F4 我想对一个已与掩码进行 或 运算的 GPIO 端口进行 PWM 处理 所以 也许我们想要 PWM0b00100010一段时间为 200khz 但随后 10khz 后 我们现在想要 PWM0b00010001 然后
  • 使用 Roslyn,如何枚举 Visual Basic 文档中的成员(命名空间、类等)详细信息?

    使用 Roslyn 确定 Visual Basic 文档成员的唯一机制似乎是 var members SyntaxTree GetRoot DescendantNodes Where node gt node is ClassStateme
  • android 检查项目是否被点击

    我刚刚开始学习 Android 编程 事情是这样的 如何检查 GridView 中的项目是否已被单击 比如为网格中的每个项目分配一个布尔值 单击 并在每次单击该项目时更改它的值 目前我只是使用一个布尔数组 所以如果我单击 item x 它会
  • 将秒转换为人类可读的持续时间

    我如何最好地将 90060 秒 转换为字符串 25h 1m 目前我正在 SQL 中执行此操作 SELECT IF HOUR sec to time sum time to sec task records time spent gt 0 C