sql >> Databáze >  >> RDS >> Mysql

odečíst 2 datetime v mysql (jeden ve 24hodinovém formátu a jeden ve formátu am/pm)

Použijte STR_TO_DATE() převést počáteční čas řetězec do MySQL DATETIME :

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

a poté použijte TIMEDIFF() odečíst dvakrát:

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'

Pravděpodobně byste měli zvážit změnu datového typu starttime sloupec na DATETIME nebo TIMESTAMP . Všimněte si také, že to předpokládá EndTime je již takového datového typu, jinak s ním také budete muset provést podobnou konverzi.



  1. Je možné vytvořit sloupec v MySQL s výrazem jako výchozí hodnotou?

  2. Co dělá (+) v Oracle SQL?

  3. Jak vytvoříte uživatele pouze pro čtení v PostgreSQL?

  4. Ekvivalent SQL Server 2000 pro ON DUPLIKÁTOVÝ KLÍČ?