sql >> Database >  >> RDS >> Sqlserver

Zet decimale tijd om in uren en minuten

Je kunt proberen:

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

uitvoer:20:33:35

Maar onthoud:Typ Tijd in MSSQL alleen onder 24 uur

Als je meer dan 24 uur wilt, probeer dan:

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)

uitvoer:25:33:35

-- Bijwerken

Decimale minuten tot meer dan 24 uur

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



  1. Hoe een externe MySQL-verbinding in te stellen

  2. SQL SELECT speed int vs varchar

  3. #1055 - Expressie van de SELECT-lijst staat niet in de GROUP BY-clausule en bevat een niet-geaggregeerde kolom. Dit is niet compatibel met sql_mode=only_full_group_by

  4. Het transactielogboek voor de database is vol