Muszę przeliczyć minuty na godziny, w zaokrągleniu do 2 miejsc po przecinku. Muszę też wyświetlać tylko do 2 liczb po przecinku. Więc jeśli mam minuty jak 650, to godziny powinny wynosić 10,83
Oto co mam do tej pory:
Select round(Minutes/60.0,2) from ....
Ale w tym przypadku, jeśli moje minuty to, powiedzmy, 630 godzin, to 10.5000000. Ale chcę tylko 10,50 (po zaokrągleniu). Jak to osiągnąć?
Odpowiedzi:
Czy nie możesz rzucić swojego wyniku jako
numeric(x,2)
? Gdziex <= 38
Zwroty
źródło
SELECT ROUND(630/60.0, 2);
mi daje10.50
.cast(630/60.0 as numeric(36,2))
jest10,50
Podobnie jak w SQL Server 2012, możesz użyć wbudowanej funkcji formatowania :
(tylko dla dalszych odczytów ...)
źródło
1,757.47
możesz użyć
źródło
źródło
źródło
źródło
Działa zarówno z Postgresql i Oracle
źródło
Poniższe zapytanie jest przydatne i proste-
Daje wynik jako 0,25.
źródło
Cokolwiek użyjesz w nominale, powinno być w systemie dziesiętnym, na przykład
1548/100
da15.00
Jeśli zastąpimy
100
ze100.0
w naszym przykładzie będziemy mieli15.48
źródło
Konwertuj swój numer na a
Numeric
lubDecimal
.Zamień zapytanie na następujące.
Serwer SQL
MySql:
Cast
Funkcja jest owijką dlaConvert
funkcji. Połączmy to z SQL, który jest językiem interpretowanym, a wynikiem tego jest to, że chociaż obie funkcje dają takie same wyniki, nieco więcej dzieje się za kulisamiCast
funkcji. Korzystanie z tejConvert
funkcji to niewielka oszczędność, ale niewielka oszczędność pomnaża się.źródło
Spróbuj tego :
SELECT CAST(ROUND([Amount 1]/60,2) AS DECIMAL(10,2)) as TOTAL
źródło
Jako dodatek do poniższych odpowiedzi, używając INT lub non-dziesiętnych typów danych w formułach, pamiętaj, aby pomnożyć wartość przez 1 i liczbę miejsc po przecinku, które wolisz.
tzn. -
TotalPackages
jestINT
mianownikiem i takTotalContainers
, ale chcę, aby mój wynik miał do 6 miejsc po przecinku.a zatem:
źródło
Poniższy fragment kodu może ci pomóc:
źródło
Uważam, że funkcja STR jest najczystszym sposobem na osiągnięcie tego.
źródło