You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL按财年分组并将秒数转换为时分秒的SQL实现需求

PostgreSQL 秒数转天时分秒及财年汇总解决方案

任务1:将每月等待秒数转换为「天, 时, 分, 秒」格式

通过数学计算拆分秒数,再拼接成目标格式:

SELECT
  "Fiscal Year",
  "Month",
  CONCAT(
    FLOOR("Time" / 86400), ' days, ',
    FLOOR(("Time" % 86400) / 3600), ' hours, ',
    FLOOR((("Time" % 86400) % 3600) / 60), ' minutes, ',
    (("Time" % 86400) % 3600) % 60, ' seconds'
  ) AS "Monthly Wait Time"
FROM your_table_name;

说明:

  • 86400 = 24小时×60分钟×60秒(一天的总秒数),3600是一小时的秒数,60是一分钟的秒数
  • FLOOR() 用于取整数部分,% 是取余数运算符,用来拆分剩余的秒数
  • 列名带空格/特殊字符,必须用双引号""包裹,PostgreSQL才会识别

任务2:按财年汇总等待时长并转换格式

先按财年汇总总秒数,再对总秒数做格式转换,同时过滤2007-2022年的数据:

SELECT
  "Fiscal Year",
  CONCAT(
    FLOOR(total_seconds / 86400), ' days, ',
    FLOOR((total_seconds % 86400) / 3600), ' hours, ',
    FLOOR((total_seconds % 86400 % 3600) / 60), ' minutes, ',
    total_seconds % 86400 % 3600 % 60, ' seconds'
  ) AS "Total Time"
FROM (
  -- 子查询:按财年汇总总秒数
  SELECT
    "Fiscal Year",
    SUM("Time") AS total_seconds
  FROM your_table_name
  WHERE "Fiscal Year" BETWEEN 2007 AND 2022
  GROUP BY "Fiscal Year"
) AS fiscal_totals
ORDER BY "Fiscal Year";

说明:

  • 子查询fiscal_totals负责计算每个财年的总等待秒数
  • 外层查询把总秒数转成要求的「天, 时, 分, 秒」格式
  • ORDER BY "Fiscal Year" 保证结果按财年升序排列

新手注意事项:

  1. 把代码中的your_table_name替换成你实际的表名
  2. 确保列名和你表中的完全一致(包括空格和括号),否则会报错
  3. 如果你的「Fiscal Year」列是正确对应10月1日至次年9月30日的财年,直接用上述代码即可

内容的提问来源于stack exchange,提问作者paisley10

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 04:15:18