问题描述
我正在处理具有SLA的票务系统的某些数据表,票证数据库位于MySQL下
SLA是必须在45分钟内解决票证,否则在票证编号旁边会显示一个警告标签
我正在使用此方法:
$start_date = new DateTime(''.$rows->created_time.'');
$since_start = $start_date->diff(new DateTime("now"));
$project_id_td .= '<a href="'.$href.'">CITA-'.$project_id.'</a>';
if ($since_start->i > 45)
{
$project_id_td .= '<span class="label label-danger pull-right">Incumpliendo</span>';
}
仅当以天为单位($ since_start-> d> 1)建立标志时有效,但是几分钟或几小时会给我随机数
我认为问题是由日期格式引起的
在数据库中,日期如下:
2020-10-25 13:46:49
是否可以将DateTime和数据库日期设置为相同的格式以实现适当的区别?
预先感谢
解决方法
您可以直接在数据库中进行计算:
select t.*,(created_time + interval 45 minute <= now()) is_sla_met
from mytable t
这会在结果集中添加另一列,称为is_sla_met
,如果当前日期时间少于故障单1
之后45分钟,则将其设置为created_time
,否则为{{ 1}}。