sql >> Base de Datos >  >> RDS >> Mysql

reste 2 datetime en mysql (uno en formato de 24 horas y otro en formato am/pm)

Use STR_TO_DATE() para convertir su starttime cadena a MySQL DATETIME :

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

y luego use TIMEDIFF() para restar dos veces:

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'

Probablemente debería considerar cambiar el tipo de datos de starttime columna a DATETIME o TIMESTAMP . Tenga en cuenta también que esto supone EndTime ya es de ese tipo de datos, de lo contrario, también tendrá que realizar una conversión similar con él.