10
votes

Ajout de certaines minutes à autre dans MySQL

Cette question est liée à Cette question

J'ai un champ qui est un champ de temps (il n'a pas besoin d'être un champ DateTime, car la partie de date n'a aucun sens ici). La valeur que je veux ajouter est dans un autre champ, en quelques minutes.

SO FONCALEMENT, je veux ajouter des minutes à une valeur temporelle. J'ai essayé la fonction datte_add, mais elle attend la date d'une date d'heure, avec l'ensemble DatePart. J'ai également essayé la fonction adjointe, mais le problème ici est que le champ de durée est en cours d'ensemble, et non dans le format HH: MM: SS, donc cela l'ajoute simplement en secondes.

Est-ce que quelqu'un sait-il Un moyen d'accomplir cela?

[modifier]

Il s'agit de la requête actuelle: xxx

et c'est le résultat: xxx


1 commentaires

Ajout d'un ajout en réponse à votre commentaire.


4 Réponses :


28
votes

Addtime est définitivement la voie à suivre ... Pour simplement ajouter une certaine quantité de minutes, vous pouvez faire quelque chose comme: xxx

Cela ajouterait 10 minutes à la première valeur.

Vous pouvez lire plus sur dev.mysql.com ici: http://dev.mysql.com/doc/refman/5.1/fr/date-and-time-fonctions.html#function_addtime

Modifier:

En plus de votre commentaire. Si vous obtenez la valeur pour ajouter au format de mm et rien d'autre, vous pouvez analyser une valeur temporelle avec la fonction sec_to_time () . Comme ceci: xxx

Cela reviendrait un temps dans le format HH: MM: SS MINUTE.


0 commentaires

0
votes

peut-être concaténate ': 00' sur la fin de la valeur du champ Minutes avant de passer à Timeadd ? Ou alternativement, multipliez la valeur de 60.


3 commentaires

Les deux ne fonctionnent pas. Avec la version Concat, j'ai des horaires comme 39:00:00, 25:00:00.


Comment gérez-vous cela, si les minutes à venir sont 00-59? Ou avez-vous des choses comme 39:00 dans votre terrain?


Je ne sais vraiment pas. C'est ce que je reçois. Mais cette méthode ne serait pas très flexible au cas où vous auriez des durées de plus de 59 minutes.



0
votes

tl: dr

Multiply minutes de 100, pas 60

Explication

Si vous souhaitez ajouter des minutes dans mm , comme si c'était dans votre exemple et évitez de la convertir Pour HH: MM: SS Format, vous devez multiplier les minutes de 100, pas 60: xxx

C'est parce que la documentation MySQL indique:

Par exemple, vous pouvez penser à '1112' et 1112 comme signifiant '11: 12: 00 '(12 minutes après 11 heures), mais MySQL les interprète comme '00: 11: 12' (11 minutes, 12 secondes). De même, '12' et 12 sont interprétés comme '00: 00: 12 '.

Vous ne voulez pas compter combien de secondes que vous avez (ex: 600 = 6 minutes, pas 10 minutes comme vous le pensez)

Si vous souhaitez ajouter 15 ou 30 minutes, vous ajoutez simplement 1500 ou 3000, et c'est tout.


0 commentaires

6
votes

Un moyen simple d'ajouter et de soustraire des intervalles des dates et des horaires est d'utiliser + code> ou - code> et le mot intervalle code>:

date + INTERVAL expr unit 
date - INTERVAL expr unit 


0 commentaires