1

我正在尝试使用 mysql 创建一个查询。

select ID,NCOde,ifnull(EndTime,now())-starttime from xxx where starttime between 
'2012-05-09 00:00:00' and '2012-05-09 23:59:59' 

问题是 ifnull(EndTime,now()) 以 24 小时格式返回日期时间,而开始时间使用 am/pm 格式。

我尝试过使用DATE_FORMAT(starttime, '%m-%d-%Y %T'),但似乎该操作将日期时间类型更改为其他类型。

有什么建议吗?

4

2 回答 2

1

用于STR_TO_DATE()将您的starttime字符串转换为 MySQL DATETIME

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

然后使用TIMEDIFF()减去两次:

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'

您可能应该考虑将starttime列的数据类型更改为DATETIMETIMESTAMP。另请注意,这假设EndTime已经是这种数据类型,否则您也必须对其执行类似的转换。

于 2012-05-09T11:17:45.007 回答
0

使用DATE_SUB()函数。

加上eggyal所说的。

于 2012-05-09T11:20:53.040 回答