背景:今天测试一个mariadb中datatime类型的字段相减问题,直接用2个字段相减得到的数值并不是秒,很坑。
后面百度了一些方法,说是使用 DateDiff 函数,这个函数文档还说有3个参数,但是3个参数运行是报错的。要疯了。最后放弃这个方法。
继续百度,终于找到一个靠谱的说法:DateDiff 函数2个值是可以的,再利用time_to_sec 函数转化为秒。
使用 DateDiff 函数时候的示例和报错:
select DateDiff('h',create_date,last_operate_date) as a,count(*) from bug_problem where create_date
between '2018-03-01' and '2018-03-27' and problem_status=6 group by a ;
报错.png
下面使用 time_to_sec 转换:
示例:
select create_date,last_operate_date, time_to_sec(timediff(last_operate_date, create_date))/3600 as a
from bug_problem
where create_date between '2018-03-01' and '2018-03-27' and problem_status=6
and (time_to_sec(timediff(last_operate_date, create_date))/3600) >= 24
and (time_to_sec(timediff(last_operate_date, create_date))/3600) <= 120;
运行成功了:
成功.png