Jak mogę zaokrąglić czasy w MySQL do najbliższych 15 minut (np. 0,15,30,45)?Jak zaokrąglić godzinę do najbliższego 15-minutowego segmentu?
Odpowiedz
SELECT SEC_TO_TIME(FLOOR((TIME_TO_SEC(CURTIME())+450)/900)*900)
W tym przykładzie użyłem CURTIME() dla czasu wprowadzania, ale można użyć dowolnego pola czasu.
900 sekund = 15 minut (okres do zaokrąglenia do), 450 sekund jest o połowę niższy (aby podać element zaokrąglenia). Testowałem z 1800/900, aby uzyskać najbliższe pół godziny, powinienem współpracować z innymi (600/300 przez 10 minut itd.).
Oto trochę przybliżonego kodu, którego użyłem, który dostarczył wyniki naprawdę bliskie temu, co chciałem. Ponieważ nie używałem sekund, wybrałem minuty w połowie drogi.
SELECT
CASE
WHEN minute(timeIn) BETWEEN 0 and 7 THEN SEC_TO_TIME((TIME_TO_SEC(timeIn) DIV 3600) * 3600)
WHEN minute(timeIn) BETWEEN 8 and 22 THEN ADDTIME(SEC_TO_TIME((TIME_TO_SEC(timeIn) DIV 3600) * 3600), '00:15:00')
WHEN minute(timeIn) BETWEEN 23 and 37 THEN ADDTIME(SEC_TO_TIME((TIME_TO_SEC(timeIn) DIV 3600) * 3600), '00:30:00')
WHEN minute(timeIn) BETWEEN 38 and 52 THEN ADDTIME(SEC_TO_TIME((TIME_TO_SEC(timeIn) DIV 3600) * 3600), '00:45:00')
WHEN minute(timeIn) BETWEEN 53 and 59 THEN ADDTIME(SEC_TO_TIME((TIME_TO_SEC(timeIn) DIV 3600) * 3600), '01:00:00')
END as 15_min
FROM
clock.punches;
SELECT FROM_UNIXTIME(TRUNCATE(UNIX_TIMESTAMP(NOW())/900,0)*900);
to można uogólnić na zaokrąglanie do dowolnej wartości czasu. 900 sekund = 15 minut. Możesz zastąpić 900 innym czynnikiem zaokrąglania.
Tak, 900 można zmienić na dowolny czas, ale kod, który podałeś sam, zawsze będzie zaokrąglany w dół. – donL
użyj funkcji CEIL() zamiast TRUNCATE() –
Aby uzyskać jeszcze lepsze (szybsze) wyniki, użyj [dzielenia liczb całkowitych] (http://dev.mysql.com/doc/refman/5.0/en/arithmetic-functions.html#operator_div) (który zaokrągla w dół, nie w górę, ale to nie powinno mieć znaczenia) - lub odejmij "MOD 900" od liczby zamiast dzielenia i mnożenia. – Ariel
- 1. Jak zaokrąglić do najbliższego 0,5?
- 2. Zaokrąglenie NSDate do najbliższego godzinę w iOS
- 3. W Excelu, jak zaokrąglić do najbliższego numeru fibonacci
- 4. Okrągły czas do najbliższego 15-minutowego okresu w Excelu
- 5. liczba zaokrąglanie do najbliższego przedziału
- 6. Jak zaokrąglić liczbę w JavaScript?
- 7. numer rundy do najbliższego 0,2 z PHP
- 8. Jak zaokrąglić czas?
- 9. zaokrąglij spację do najbliższego 0.5 w pytonie
- 10. Jak zaokrąglić do najbliższej dziesiątki?
- 11. Jak zaokrąglić liczby do dynamicznej precyzji w Ruby On Rails?
- 12. Zaokrąglanie Mechanizm do najbliższego 0,05
- 13. Odniesienie do częściowego segmentu wektora?
- 14. Jak zaokrąglić Pandy "DatetimeIndex"?
- 15. Jak zaokrąglić liczbę
- 16. runda do najbliższego miłego numeru
- 17. Jak zaokrąglić do dwóch miejsc po przecinku?
- 18. Jak zaokrąglić liczbę dziesiętną do najbliższej ułamka?
- 19. Jak zaokrąglić do liczby całkowitej w R?
- 20. javascript - jak zaokrąglić do najbliższej liczby całkowitej
- 21. C++: Jak zaokrąglić double do int?
- 22. Jak zaokrąglić liczbę do najbliższych 10?
- 23. Jak zaokrąglić liczbę do określonego zakresu?
- 24. Jak zaokrąglić do 2 miejsc dziesiętnych?
- 25. Jak zaokrąglić liczbę do wybranej liczby całkowitej
- 26. jak zaokrąglić do następnej 10 w oracle?
- 27. Python - zaokrąglić do najbliższej dziesiątki
- 28. Jak zaokrąglić NSDecimalNumber w szybkim?
- 29. Jak zaokrąglić liczbę w JavaScript?
- 30. Jak szybko zaokrąglić pasek postępu?
Czy możesz pokazać nam wszystko, co zrobiłeś do tej pory? :-) Następnie możemy zasugerować odpowiednio. – bonCodigo
Dlaczego nie użyć 'timestampdiff' z' mod'? Btw biorę mój wcześniejszy komentarz, ponieważ nie zauważyłem, że odpowiedź jest przez ciebie. Mogłeś właśnie zaktualizować swoje pytanie, dołączając swój kod :-) – bonCodigo