TIMESTAMPDIFF не работает, если одна из ячеек имеет значение NULL в Python3 MySQL - PullRequest
1 голос
/ 14 марта 2020

У меня есть таблица со следующими четырьмя столбцами DATETIME и последним пятым столбцом INTEGER: time_in1, time_out1, time_in2, time_out2, total_seconds.

Функция для столбца total_seconds:

((TIMESTAMPDIFF(SECOND,time_in1,time_out1))+(TIMESTAMPDIFF(SECOND,time_in2, time_out2)))

Есть ли способ заставить "total_seconds" отображать итоговое значение, даже если только "time_in1" и "time_out1" заполнены правильными данными, но два других столбца имеют значение NULL?

Я знаю, что Я мог бы создать больше столбцов, чтобы отдельно рассчитывать общее количество секунд для каждого интервала, а затем суммировать их все в общем столбце. Но было бы неплохо сделать так, как описано выше.

1 Ответ

1 голос
/ 14 марта 2020

Пустые столбцы DATETIME заставляют функцию TIMESTAMPDIFF() возвращать NULL. Таким образом, вам нужно обусловить эти значения с помощью COALESCE(value, default).

  COALESCE(TIMESTAMPDIFF(SECOND,time_in1,time_out1),0) 
+ COALESCE(TIMESTAMPDIFF(SECOND,time_in2, time_out2),0)

. Это работает, если вы хотите использовать ноль секунд для случаев, когда либо значения, либо оба значения DATETIME нуль.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...