按4个日期中的最晚日期计算的PHP订单

按4个日期中的最晚日期计算的PHP订单,php,mysql,date,Php,Mysql,Date,我有一个名称和4个状态的条目,有日期和描述 该表与此类似: name, date_cancelation, date_success, date_meeting, date_setup, note_cancelation, note_success, note_meeting, note_setup 在我的foreach循环中,我实现了确定这4个日期中哪一个是最晚的,因此我在列表中显示如下内容: 1) John Doe - last status at 11.12.2016 -

我有一个名称和4个状态的条目,有日期和描述

该表与此类似:

name, 
date_cancelation, 
date_success, 
date_meeting, 
date_setup,
note_cancelation, 
note_success, 
note_meeting, 
note_setup
在我的foreach循环中,我实现了确定这4个日期中哪一个是最晚的,因此我在列表中显示如下内容:

1) John Doe - last status at 11.12.2016 - canceled
2) Mary Jane - last status at 02.01.2017 - meeting
3) Peter Meyer - last status at 10.12.2016 - canceled
对于日期,我在sql中有4列

现在我想知道如何在日期不是唯一列的情况下按最新日期对列表进行排序

通过搜索解决方案,我知道我应该首先按日期对SQL进行排序,但由于日期在4列中,我不知道如何排序:)

谁能给我一个提示吗

谢谢

编辑:

这是我的代码,它为我提供了一个成功的人员列表,其中包括他们最近的状态:

$query=“选择abc\u表单\u jobstate.id,
`jobstate\u申请人`,`jobstate\u jobstate`,
`申请人人名`、`申请人姓名`、`状态成功日期`、`状态取消日期`、`状态会议日期`、`状态申请日期`、,
`成功通知单、‘取消通知单’、‘会议通知单’、‘申请通知单`
从“abc”到“form”到“jobstate”`
左侧加入abc表格申请人(申请人个人id=abc表格申请人id)
其中'applicator\u jobangebot`='$di;
$db->setQuery($query);
$output=$db->loadObjectList();
foreach($输出为$输出){
//为日期设置变量
$vm\u date=$outputs->status\u success\u date;
$ab_date=$outputs->status_cancel_date;
$pa_date=$outputs->status_meeting_date;
$ll\u date=$outputs->status\u application\u date;
//设置注释的变量
$vm\u note=$outputs->success\u note;
$ab_note=$outputs->cancel_note;
$pa_note=$outputs->meeting_note;
$ll_note=$outputs->application_note;
//将日期放入数组中
$statusdates=[
“成功”=>$vm\U日期,
“取消”=>$ab_日期,
“工作”=>$pa_日期,
“申请”=>$ll\U日期
];
//查看记录中最近的日期
$max=max(数组映射($strotime',$statusdates));
$recent_status=日期($d.m.Y',$max);
$recent_statustype=数组_搜索(最大($statusdates),$statusdates);
如果($recent_statustype==“Success”){
$statusnote=$vm\u note;
};
如果($recent_statustype==“Cancel”){
$statusnote=$ab_note;
};
如果($recent_statustype==“Work”){
$statusnote=$pa_note;
};
如果($recent_statustype==“Application”){
$statusnote=$ll\u note;
};

echo'创建名为
date
的列,并将其类型设置为
date
CURRENT\u TIMESTAMP
,然后将数据添加到此
表中
。同时通过应用查询顺序by
date
desc/asc来获取此列的排序数据。

您可以使用uasort

uasort($array,function($a,$b){
$aLatestTimeStamp=$a->getLatestTimeStamp();
$BlatestTimestamp=$b->getLatestTimeStamp();
如果($aLatestTimeStamp==$BlatestTimestamp){
返回0;
}
如果($aLatestTimeStamp<$BlatestTimestamp){
返回-1;
}否则{
返回1;
}
});

只需显示您尝试过的查询和示例数据。因此,我们可以帮助您将日期表中的“desc”添加到帖子中吗?也许我们只能使用mysql:)请参阅签出
最大的
函数:为什么您不能让SQL为您进行排序?ORDERED BY->OrderBy和:it's->its;-)
uasort($array, function($a , $b){
        $aLatestTimeStamp = $a->getLatestTimeStamp();
        $bLatestTimeStampt = $b->getLatestTimeStamp();
            if ($aLatestTimeStamp == $bLatestTimeStampt) {
                return 0;
            }
            if ($aLatestTimeStamp < $bLatestTimeStampt) {
                return -1;
            } else {
                return 1;
            }
    });