Скажем, у меня есть следующий запрос, где я объединяю несколько столбцов в столбец, проверяю их значения и преобразовываю их в формат даты и времени для столбца с именем next_execute
:
select
DISTINCT queues_job.queue_id,
queues.id,
MAX(queues_job.created_at) as last_executed,
CONCAT(
IF( queues.year = "*", CAST( DATE_FORMAT( NOW(),"%Y" ) as char ), queues.year ),
"-",
IF( queues.month_of_the_year = "*", CAST( DATE_FORMAT( NOW(),"%m" ) as char ), queues.month_of_the_year ),
"-",
IF( queues.day_of_the_month = "*", CAST( DATE_FORMAT( NOW(),"%d" ) as char ), queues.day_of_the_month ),
" ",
IF( queues.hour = "*", CAST( DATE_FORMAT( NOW(),"%H" ) as char ), queues.hour ),
":",
IF( queues.minute = "*", CAST( DATE_FORMAT( NOW(),"%m" ) as char ), queues.minute ),
":",
"00"
) as next_execute
from `queues`
LEFT JOIN `queues_job` ON `queues_job`.`queue_id` = `queues`.`id`
GROUP BY queues_job.queue_id, queues.id
HAVING last_executed < next_execute
ORDER BY last_executed DESC
ожидаемый результат:
queue_id,id,last_executed,next_execute
3,"3","2019-03-13 10:55:05","2019-03-13 12:00:00"
1,"1","2019-03-13 10:55:05","2019-03-13 12:30:00"
2,"2","2019-03-13 10:55:05","2019-03-13 12:15:00"
фактическая выработка
queue_id,id,last_executed,next_execute
3,"3","2019-03-13 10:02:51","2019-03-13 12:30:00-03-13 12:15:00-03-13
1,"1","2019-03-13 10:55:05","2019-03-13 12:30:00"
2,"2","2019-03-13 10:16:07","2019-03-13 12:30:00-03-13 12:15:00"
12: 00: 00"
Похоже, команда CONCAT
продолжает объединять каждую строку в свой собственный столбец, что отключает ее использование для сравнения значений last_executed
и next_execute
.
Я что-то упускаю очень очевидное?