Mysql
 sql >> Base de données >  >> RDS >> Mysql

soustraire 2 datetime dans mysql (un au format 24 heures et un au format am/pm)

Utilisez STR_TO_DATE() pour convertir votre starttime chaîne à un MySQL DATETIME :

STR_TO_DATE(starttime, '%m-%d-%Y %r')

puis utilisez TIMEDIFF() soustraire deux fois :

select ID,NCOde,
  TIMEDIFF(ifnull(EndTime,now()), STR_TO_DATE(starttime, '%m-%d-%Y %r'))
from xxx
where STR_TO_DATE(starttime,'%m-%d-%Y %r')
        between '2012-05-09 00:00:00' and '2012-05-09 23:59:59'

Vous devriez probablement envisager de changer le type de données de starttime colonne à DATETIME ou TIMESTAMP . Notez également que cela suppose EndTime est déjà d'un tel type de données, sinon vous devrez également effectuer une conversion similaire avec lui aussi.