Come posso arrotondare i tempi in MySQL ai 15 minuti più vicini (ad esempio 0,15,30,45)?Come arrotondare il tempo al segmento di 15 minuti più prossimo
risposta
SELECT SEC_TO_TIME(FLOOR((TIME_TO_SEC(CURTIME())+450)/900)*900)
In questo esempio ho usato CURTIME() per il tempo di immissione, ma è possibile utilizzare qualsiasi campo di tempo.
900 secondi = 15 minuti (il periodo da arrotondare a), 450 secondi è la metà di quello (per fornire l'elemento di arrotondamento). Ho provato con 1800/900 per ottenere la mezz'ora più vicina, dovrebbe funzionare con gli altri (600/300 per 10 minuti, ecc.).
Ecco un codice approssimativo che ho utilizzato per ottenere risultati davvero vicini a ciò che volevo. Perché non ho usato secondi ho appena scelto minuti vicino al punto di mezzo.
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);
Questo può essere generalizzato per arrotondare a qualsiasi valore di tempo. 900 secondi = 15 minuti. È possibile sostituire il 900 con qualsiasi altro fattore di arrotondamento.
Sì, il 900 può essere modificato in qualsiasi quantità di tempo, ma il codice che hai fornito da solo arriverà sempre per difetto. – donL
usa CEIL() invece di TRUNCATE() –
Per risultati ancora migliori (più veloci) usa [divisione intera] (http://dev.mysql.com/doc/refman/5.0/en/arithmetic-functions.html#operator_div) (che arrotonda, non su, ma non dovrebbe importare) - o sottrarre il 'MOD 900' dal numero invece di dividere e moltiplicare. – Ariel
- 1. Python - arrotondare fino al dieci più prossimo
- 2. In Delphi: Come faccio a arrotondare un TDateTime al secondo più prossimo, minuto, cinque minuti ecc?
- 3. come arrotondare al prossimo 10 in oracolo?
- 4. PHP Aggiunta di 15 minuti per il valore Tempo
- 5. C# - valori del tempo di arrotondamento fino al quarto d'ora più prossimo
- 6. T-SQL: intervallo fino a 15 minuti più vicino
- 7. Arrotondare al più vicino
- 8. per arrotondare al prossimo ordine di grandezza in R
- 9. decimale rotondo al 10 ° più prossimo
- 10. Crontab Formattazione - ogni 15 minuti
- 11. UIDatePicker 15 minuti Incrementi Swift
- 12. Arrotondare al più vicino cinque
- 13. Arrotondare al più vicino 100
- 14. Android - TimePicker minuti a 15
- 15. Creazione regolari di 15 minuti il tempo-serie dal irregolari serie temporale
- 16. PostgreSQL: SELEZIONARE DOVE meno di 15 minuti
- 17. Arrotondare al multiplo più vicino di un numero
- 18. Arrotondare al più alto numero intero più vicino in VBA
- 19. Arrotondare fino al centinaio più vicino
- 20. risultato del Gruppo di 15 minuti intervallo di tempo in MongoDb
- 21. Arrotondare un decimale al quarto più vicino in C#
- 22. Cron: Impostazione di più minuti
- 23. Come impostare un'attività cron in Plesk ogni 15 minuti?
- 24. .NET Garbagecollector trouble. Blocchi per 15-40 minuti
- 25. Come arrotondare una volta?
- 26. Oracle PLSQL truncate datetimes a blocchi di 15 minuti
- 27. Come arrotondare un DateTime al Periodo più vicino
- 28. javascript - come da arrotondare al numero intero più vicino
- 29. Come creare un DateTime uguale a 15 minuti fa?
- 30. Arrotondare gli interi al multiplo più vicino di 10
Puoi mostrarci qualcosa che hai fatto finora? :-) Quindi potremmo suggerire di conseguenza. – bonCodigo
Perché non usare un 'timestampdiff' con' mod'? A proposito, prendo il mio commento precedente mentre non noto che la risposta è da voi. Potresti aver appena aggiornato la tua domanda aggiungendo il tuo codice :-) – bonCodigo