Convertir et ronde (quelques Secondes à quelques Minutes) avec SQL
J'ai un champ de ma table qui représente les secondes, je veux convertir en minutes
Select (100/60) as Minute from MyTable
-> 1.66
Comment puis-je obtenir 1 minute et 40 secondes 00:01:40
et ensuite le tour de 00:02:00
et si 00:01:23
tour à 00:01:30
De L'Utilisation De Mysql.
Êtes-vous essayer d'arrondir au plus proche de 30 secondes et de les afficher comme
Oui, je suis en train de la tour la plus proche de 30 secondes et l'affichage en mm:ss
mm:ss
?Oui, je suis en train de la tour la plus proche de 30 secondes et l'affichage en mm:ss
OriginalL'auteur hch | 2011-12-18
Vous devez vous connecter pour publier un commentaire.
Il y a deux façons de l'arrondissement, à l'aide de l'arithmétique des nombres entiers et en évitant floating points, une valeur la plus proche de trente secondes...
Cette dernière est plus longue, mais en termes de temps cpu devrait être plus rapide.
Vous pouvez ensuite utiliser
SEC_TO_TIME(seconds)
pour obtenir le formathh:mm:ss
, et prendre à droite 5 caractères si vous vraiment besoinhh:mm
.Si vous voulais éviter
SEC_TO_TIME(seconds)
, vous pouvez mettre en place la chaîne de soi-même.secondes = total_seconds % 60
final string =
LPAD(minutes, 2, '0') | ':' | LPAD(seconds, 2, '0')
FLOOR()
ing ou unDIV
ing...Parenthèse, yup, mon erreur. Pas besoin de SOL, etc, mais doit s'assurer que toutes les valeurs sont des nombres ENTIERS - Il est fourni à titre d'exemple sur la façon de réaliser cela avec l'arithmétique des nombres entiers car il est beaucoup moins de CPU intensive que l'arithmétique à virgule flottante.
Oui, vous devez vous assurer des résultats font partie intégrante. 🙂 Votre premier exemple donne le mal sous MySQL si "secondes" est, disons, 83. Le
/
opérateur donne une VIRGULE, même si les deux opérandes sont des entiers. Donc, vous devez soitFLOOR()
le quotient, définissez @@div_precision_increment à zéro (beurk!), ou utiliserDIV
en place de/
.Fixe maintenant, la grande.
OriginalL'auteur MatBailie
je ne suis pas sûr de savoir comment
round
, mais vous pouvez le convertirseconds
entime
je.ehh:mm:ss
format à l'aide deSEC_TO_TIME(totaltime)
OriginalL'auteur dku.rajkumar
Résultat souhaité :
Résultat :
J'essaie avec ceci:
Résultat :
Merci pour votre aide !
(x + 29) - (x + 29) % 30
OriginalL'auteur hch
Vous pouvez simplement écrire votre propre fonction http://dev.mysql.com/doc/refman/5.0/en/create-procedure.html
Mais je préfère le faire que dans une programmation langage (PHP, Python, C), pas sur le côté de la base de données.
OriginalL'auteur n1_