我正在尝试使用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小时格式返回datetime,而starttime使用am / pm格式。
我尝试过使用DATE_FORMAT(starttime, '%m-%d-%Y %T')
,但似乎操作将日期时间类型更改为其他类型。
有什么建议吗?
答案 0 :(得分: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
列的数据类型更改为DATETIME
或TIMESTAMP
。另请注意,这假设EndTime
已经是这种数据类型,否则您也必须使用它执行类似的转换。
答案 1 :(得分:0)
使用DATE_SUB()功能。
再加上eggyal说的话。