Как вернуть время из IF-пункта

0

У меня возникают проблемы с выводом времени из условного выбора. Цель состоит в том, чтобы вычесть 30мин, если время < 6h.

Вот демо:

SELECT TIME(start_time) AS start,
    TIME(end_time) AS end,
    TIME_TO_SEC(TIMEDIFF(end_time, start_time)) AS durationSecs,
    IF(
        TIMEDIFF(end_time, start_time) >= "06:00:00",
        SUBTIME(TIMEDIFF(end_time, start_time), 30:0:0),
        TIMEDIFF(end_time, start_time)
    ) AS duration
FROM [...]

Этот код возвращает то, что я считаю строковым представлением самого объекта TIME, например 30303a30353a3030.

Как я могу получить это, чтобы вывести фактическое время?

Теги:

1 ответ

2
Лучший ответ
SELECT TIME(start_time) AS start,
    TIME(end_time) AS end,
    TIME_TO_SEC(TIMEDIFF(end_time, start_time)) AS durationSecs,
    IF(
        TIMEDIFF(end_time, start_time) >= "06:00:00",
        TIMEDIFF(end_time - INTERVAL 30 MINUTE, start_time),
        TIMEDIFF(end_time, start_time)
    ) AS duration
FROM [...]
  • 0
    Это сработало, спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню