Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Konwertuj czas dziesiętny na godziny i minuty

Możesz spróbować:

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

wyjście :20:33:35

Ale pamiętaj:Wpisz czas w MSSQL tylko poniżej 24 godzin

Jeśli chcesz dłużej niż 24 godziny, spróbuj:

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)

wyjście :25:33:35

-- Aktualizuj

Dziesiętne minuty do ponad 24 godzin

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

wyjście:01:17:54



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zarządzaj współbieżnością transakcji za pomocą blokad w SQL Server

  2. SQL Server 2000 — serwer połączony

  3. Dlaczego nie mogę wykonać funkcji agregującej na wyrażeniu zawierającym agregację, ale mogę to zrobić, tworząc wokół niego nową instrukcję select?

  4. MultipleActiveResultSets=Prawda czy wiele połączeń?

  5. Usunąć klucz obcy bez znajomości nazwy ograniczenia?