SELECT
*, CASE
WHEN NOW() >= act_start_datetime
AND act_end_datetime >= NOW() THEN
0
WHEN NOW() > act_start_datetime THEN
1
ELSE
2
END hd_state
FROM
talent_content
ORDER BY
hd_state,
CASE
WHEN (hd_state = 0 OR hd_state = 1) THEN
act_start_datetime
END ASC,
CASE
WHEN hd_state = 2 THEN
act_start_datetime
END DESC