【问题标题】:SQL Converting column's recorded seconds to hours:minutes:secondsSQL将列的记录秒数转换为小时:分钟:秒
【发布时间】:2016-01-14 13:56:58
【问题描述】:

我有一个表(主表),它记录了人员列表中一天工作的秒数。我正在尝试将这些秒数转换为 hh:mm:ss。

尝试使用:

DECLARE @TimeinSecond INT
SET @TimeinSecond = main.column -- Change the seconds

SELECT RIGHT('0' + CAST(@TimeinSecond / 3600 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST((@TimeinSecond / 60) % 60 AS VARCHAR),2)  + ':' +
RIGHT('0' + CAST(@TimeinSecond % 60 AS VARCHAR),2)

main.column 不会在此处注册为需要转换的内容。可以选择一列进行全时转换吗? (每个人每天工作的秒数都不一样)

【问题讨论】:

  • 你希望“main.column”做什么?这不是您从 SQL 表中检索数据的方式...
  • 安迪回答了我,感谢您的回复。我想我只是想了这个。

标签: sql sql-server ssms


【解决方案1】:
select * , convert(varchar(20), dateadd(ss, secondsColumn, 0), 108) from main

输出 09:20:34

【讨论】:

    【解决方案2】:

    将列分配给变量在 sql server 中没有意义(我假设您正在使用它,因为您已用 ssms 标记了您的问题)。

    看起来您只需选择此列值并对其进行一些计算

    select 
        RIGHT('0' + CAST(column / 3600 AS VARCHAR),2) + ':' +
        RIGHT('0' + CAST((column / 60) % 60 AS VARCHAR),2)  + ':' +
        RIGHT('0' + CAST(column % 60 AS VARCHAR),2)
    from main
    

    【讨论】:

    • 是的先生,谢谢你我可能已经看这段代码太久了......这很简单,非常感谢!如果允许,我会在 6 分钟内将其标记为已回答。
    【解决方案3】:

    您可以使用下面的查询从秒中获取日期。只需将秒数添加到您的日期,然后将值转换为 varchar 格式,例如'hh:mm:ss'

        ;WITH test_data AS(
        SELECT N'20160113' AS working_date, 3600 AS SECONDS
        UNION ALL
        SELECT N'20160113', 2400
        UNION ALL
        SELECT N'20160113', 1500
        )
    
    SELECT LEFT(CONVERT(VARCHAR, DATEADD(ss, [seconds], working_date), 114), 8) FROM test_data
    

    【讨论】:

    • 他要求的不是约会,而是时间长度。
    猜你喜欢
    • 2021-10-29
    • 1970-01-01
    • 1970-01-01
    • 2012-06-15
    • 2015-06-02
    • 2011-09-01
    • 1970-01-01
    相关资源
    最近更新 更多