Minuty na liczbę dziesiętną

Minuty na liczbę dziesiętną
S6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0

Cześć,
pewnie to banał, ale nie mogę sobie poradzić z zamianą liczby minut na liczbę dziesiętną.
Wynik zwracany jako liczba całkowita
Bardzo dziękuję za pomoc :)

Kopiuj
DATEDIFF(MINUTE,
  (dateadd(day, 0, datediff(day, 0, isnull(zzw.Data_rz, cast('19000101' as datetime)))) + 
  dateadd(day, 0 - datediff(day, 0, isnull(zzw.Godz, 0)), isnull(zzw.Godz_rz, 0))),
  (dateadd(day, 0, datediff(day, 0, isnull(zzw.Data, cast('19000101' as datetime)))) + 
  dateadd(day, 0 - datediff(day, 0, isnull(zzw.Godz, 0)), isnull(zzw.Godz, 0)))
  ) / 60

 convert(varchar(100), DATEDIFF(minute, (CONVERT(VARCHAR,ZZW.DATA_RZ + CONVERT(DATETIME, CONVERT(VARCHAR(8), ISNULL(ZZW.GODZ_RZ, CAST('00:00' AS DATETIME)), 8), 8),120)),
(CONVERT(VARCHAR,ZZW.DATA + CONVERT(DATETIME, CONVERT(VARCHAR(8), ISNULL(ZZW.GODZ, CAST('00:00' AS DATETIME)), 8), 8),120)))) / 60
YA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2385
0

Możesz podać jakiś przykład bez kodu? Teraz, rozumiem, że masz np. 10,23 minut i to chcesz zamieniać na liczbę dziesiętną, np. na 10,23 ? ;-)

S6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0
yarel napisał(a):

Możesz podać jakiś przykład bez kodu? Teraz, rozumiem, że masz np. 10,23 minut i to chcesz zamieniać na liczbę dziesiętną, np. na 10,23 ? ;-)

OK, więc wynik jest np. 384 i po podzieleniu przez 60 (jak w kodzie) jest wyświetlana i tak liczba całkowita czyli 6 zamiast (jak chcę) 6,4 (384/60=6,4)
screenshot-20220629130658.png

S6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0
yarel napisał(a):

Możesz podać jakiś przykład bez kodu? Teraz, rozumiem, że masz np. 10,23 minut i to chcesz zamieniać na liczbę dziesiętną, np. na 10,23 ? ;-)

właśnie wynik zawsze jest liczbą całkowitą... minut... 384 196 198 itp

YA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2385
1

@Solar67: Inaczej zapytam. Jeśli na wejściu masz: 1 minuta, 10 minut, 100 minut, 1000 minut, 10000 minut, to co chcesz mieć na wyjściu?
Co jeśli na wejściu masz 10.12345677777 minut? Co ma by na wyjściu?

Z kodu SQL, mam wrażenie, że chcesz jakoś formatować różnicę między dwiema datami, ale pytasz o zamianę minut na format dziesiętny.

FA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 218
3
Kopiuj
SELECT 384 / 60 -- to nie działa
  ,384 / 60.0 -- to jest najprostsze, ale silnik może potraktować to jak FLOAT (pewności nie mam) i może przynieść niepożądane rezultaty
  ,CONVERT(NUMERIC(18,8),CONVERT(NUMERIC(18,8),384)/CONVERT(NUMERIC(18,8),60)) -- opcja dla przesadnie ostrożnych, precyzję musisz sobie dobrać sam :)
mateuszrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 85
0
Kopiuj
SELECT CONVERT(NUMERIC(18,2), (384.00/60.00)) 

-- Result: 6.40

Chcesz po prostu godziny w formie dziesiętnym.

S6
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 8
0
yarel napisał(a):

@Solar67: Inaczej zapytam. Jeśli na wejściu masz: 1 minuta, 10 minut, 100 minut, 1000 minut, 10000 minut, to co chcesz mieć na wyjściu?
Co jeśli na wejściu masz 10.12345677777 minut? Co ma by na wyjściu?

Z kodu SQL, mam wrażenie, że chcesz jakoś formatować różnicę między dwiema datami, ale pytasz o zamianę minut na format dziesiętny.

zobacz... datediff - wynik 384 minuty tj. 384 minuty / 60 = 6,4 godziny i taki wynik mnie interesuje :)

Fac napisał(a):
Kopiuj
SELECT 384 / 60 -- to nie działa
  ,384 / 60.0 -- to jest najprostsze, ale silnik może potraktować to jak FLOAT (pewności nie mam) i może przynieść niepożądane rezultaty
  ,CONVERT(NUMERIC(18,8),CONVERT(NUMERIC(18,8),384)/CONVERT(NUMERIC(18,8),60)) -- opcja dla przesadnie ostrożnych, precyzję musisz sobie dobrać sam :)

dzięki :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.