Результаты колонки MySQL concat объединяются при использовании команды, имеющей - PullRequest
0 голосов
/ 13 марта 2019

Скажем, у меня есть следующий запрос, где я объединяю несколько столбцов в столбец, проверяю их значения и преобразовываю их в формат даты и времени для столбца с именем 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.

Я что-то упускаю очень очевидное?

...