Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

subtrair 2 datetime no mysql (um no formato 24 horas e um no formato am/pm)


Use STR_TO_DATE() para converter seu starttime string para um MySQL DATETIME :
STR_TO_DATE(starttime, '%m-%d-%Y %r')

e então use TIMEDIFF() para subtrair duas vezes:
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'

Você provavelmente deve considerar alterar o tipo de dados do starttime coluna para DATETIME ou TIMESTAMP . Observe também que isso pressupõe EndTime já é de tal tipo de dados, ou então você também terá que realizar uma conversão semelhante com ele.