sql >> Databáze >  >> RDS >> Sqlserver

Převeďte desetinný čas na hodiny a minuty

Můžete zkusit:

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

výstup:20:33:35

Ale pamatujte:Zadejte čas v MSSQL pouze do 24 hodin

Pokud chcete déle než 24 hodin, zkuste:

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)

výstup:25:33:35

-- Aktualizovat

Desetinné minuty až více než 24 hodin

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);

výstup:01:17:54



  1. Chyba Android SQLite:číslo proměnné musí být mezi ?1 a ?999

  2. ORA-01264:Nelze vytvořit název souboru protokolu

  3. Funkce TO_DSINTERVAL() v Oracle

  4. Jak se připojit k MySQL na Amazon EC2 z Linuxu / Mac?