読者です 読者をやめる 読者になる 読者になる

【MySQL】日付の ORDER BY で開始時刻を指定する

time型のデータをソートしていたんだけど、
0時〜23時59分ではなく、
5時〜4時59分でソートする必要があった。

なので、ORDER BY の開始時刻を指定する必要がある。
こーゆー場合は、 ORDER BY + CASE を使う。

SELECT update_time FROM stores ORDER BY CASE WHEN update_time < '05:00:00' THEN 2 ELSE 1, update_time ASC;

第1条件でCASE によって5時より前の時間帯のフラグを立てて、
それを踏まえた第2条件で update_time を比較している。
ORDER BY が複数条件を指定できるのを利用した感じ。

これは便利だー。