Mysql
 sql >> Datenbank >  >> RDS >> Mysql

subtrahieren Sie 2 datetime in mysql (eines im 24-Stunden-Format und eines im am/pm-Format)

Verwenden Sie STR_TO_DATE() um Ihre starttime umzuwandeln String zu einem MySQL DATETIME :

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

und verwenden Sie dann TIMEDIFF() zweimal subtrahieren:

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'

Sie sollten wahrscheinlich in Erwägung ziehen, den Datentyp von starttime zu ändern Spalte zu DATETIME oder TIMESTAMP . Beachten Sie auch, dass dies von EndTime ausgeht ist bereits von einem solchen Datentyp, sonst müssen Sie auch damit eine ähnliche Konvertierung durchführen.