MySQL テーブルに EventStart と Distance の 2 つの列があります。EventStart は、イベントの開始時刻を表す DateTime ですが、Distance は、イベントまでのマイル数とそこに到達するまでの時間を組み合わせた文字列です (「126.2 マイル / 2 時間 35 分」など)。
イベントのために LEAVE する必要がある場合に応じて、テーブルの内容を出力したいと思います。つまり、EventStart から Distance 値の右半分 (「/」マークの後のすべて) を減算します。結果を出発時刻順に並べたいので、結果を反復するときに単純に印刷します。
PHP では、これはかなり簡単です。
$distance = substr($row['Distance'], strrpos( $row['Distance'],'/')+1);
$result = date('j M - g:i a', strtotime($row['EventStart']." -".$distance));
しかし、10 時から 1 時間先のイベントが 1 つと、11 時から 3 時間先のイベントが 1 つある場合、MySQLORDER BY EventStart
を使用すると、8 時より前に 9 時がリストされてイベントが表示されます。正しくない。
何百ものエントリが存在する可能性があるため、2D PHP 配列を作成してそれをソートすることは避けたいので、MySQL クエリで直接実行することを検討しています。これにより、2つの部分からなる質問になると思います。
- 距離の計算で "/" マークの後のすべてを選択するにはどうすればよいですか?
- 計算された距離で注文できるように、EventStart からその値を減算するにはどうすればよいですか?
最後の注意: この方法で距離を保存するのは間違いであることはわかっています。私は他の誰かからプロジェクトを取り上げています。
助けてくれてありがとう!