我在 MySQL 表中有两列:EventStart 和 Distance。EventStart 是一个 DateTime,它表示事件开始的时间,但 Distance 是一个字符串,它结合了到事件的英里数和到达那里的时间,例如“126.2 英里/2 小时 35 分钟”。
我想根据我需要离开事件的时间打印表格的内容,这意味着我会从 EventStart 中减去距离值的右半部分(“/”标记之后的所有内容)。我想按出发时间排序结果,所以当我迭代结果时,我只需打印它们。
在 PHP 中,这相当容易:
$distance = substr($row['Distance'], strrpos( $row['Distance'],'/')+1);
$result = date('j M - g:i a', strtotime($row['EventStart']." -".$distance));
但是,如果我有一个从 10 点开始并且距离 1 小时的事件,以及一个从 11 点开始并且距离 3 小时的事件,那么使用 MySQLORDER BY EventStart
时,事件将显示在 8 时间之前列出的 9 个出发时间,这很明显不正确。
由于可能有 100 个条目,我想避免制作 2D PHP 数组并对其进行排序,所以我希望直接在 MySQL 查询中进行。我认为这使它成为一个两部分的问题:
- 如何仅选择“/”标记后的所有内容进行距离计算?
- 如何从 EventStart 中减去该值,以便我可以按计算的距离排序?
最后一点:我知道以这种方式存储距离是错误的;我从别人那里接了这个项目。
谢谢你的帮助!