我正在尝试使用 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')
,但操作似乎将日期时间类型更改为其他类型。
有什么建议吗?
最佳答案
使用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
列的数据类型更改为 DATETIME
或 TIMESTAMP
.另请注意,这假定 EndTime
已经是此类数据类型,否则您也必须对其执行类似的转换。
关于mysql - 在 mysql 中减去 2 个日期时间(一个是 24 小时格式,一个是 am/pm 格式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10514685/