Convert decimal time to hours and minutes

前端 未结 4 2047
刺人心
刺人心 2020-12-03 15:35

Been struggling with this and can\'t seem to find the right answer, although there are plenty of mentions for converting, but nothing specific is working.

I need to

4条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-03 15:56

    You can try:

    DECLARE @HOURS decimal(7,4) = 20.5599
    SELECT  CAST(CONVERT(VARCHAR,DATEADD(SECOND, @HOURS * 3600, 0),108) AS TIME)
    

    output : 20:33:35

    But remember : Type Time in MSSQL only under 24hrs

    If you want greater than 24hrs, try:

    DECLARE @HOURS decimal(7,4) = 25.5599
    SELECT 
    RIGHT('0' + CAST (FLOOR(@HOURS) AS VARCHAR), 2) + ':' + 
    RIGHT('0' + CAST(FLOOR((((@HOURS * 3600) % 3600) / 60)) AS VARCHAR), 2) + ':' + 
    RIGHT('0' + CAST (FLOOR((@HOURS * 3600) % 60) AS VARCHAR), 2)
    

    output : 25:33:35

    -- Update

    Decimal minutes to more than 24hrs

    DECLARE @MINUTES decimal(7,4) = 77.9
    SELECT
    RIGHT('0' + CAST (FLOOR(COALESCE (@MINUTES, 0) / 60) AS VARCHAR (8)), 2) + ':' + 
    RIGHT('0' + CAST (FLOOR(COALESCE (@MINUTES, 0) % 60) AS VARCHAR (2)), 2) + ':' + 
    RIGHT('0' + CAST (FLOOR((@MINUTES* 60) % 60) AS VARCHAR (2)), 2);
    

    output: 01:17:54

提交回复
热议问题