Mysql
 sql >> Database >  >> RDS >> Mysql

sottrarre 2 datetime in mysql (uno in formato 24 ore e uno in formato am/pm)

Usa STR_TO_DATE() per convertire il tuo starttime stringa a un MySQL DATETIME :

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

e quindi utilizzare TIMEDIFF() per sottrarre due volte:

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'

Probabilmente dovresti considerare di cambiare il tipo di dati di starttime colonna a DATETIME o TIMESTAMP . Nota anche che questo presuppone EndTime è già di un tale tipo di dati, altrimenti dovrai anche eseguire una conversione simile con esso.