Как получить разницу во времени в секундах между двумя статусами столбцов БД (или событиями)

Я пытаюсь получить разницу во времени в секундах в моей базе данных между двумя событиями. В базе данных таблица users имеет разные столбцы, но я работаю со столбцом status. Если пользователь размещает заказ на нашем сайте, в столбце статус отображается «ожидание», а если он подтвержден нашими агентами, то переключается на «успех». Я пытаюсь получить разницу во времени (в секундах) между тем, когда он показывает ожидание и когда он показывает успех.

NB: я буду рад, если кто-нибудь сможет объяснить функцию time() в PHP на примере.

1 ответ

  1. Вы можете использовать unix_timestamp()функцию MySQL. Предположим, что в вашей таблице есть две записи для двух событий , и есть столбец с именемeventTime, тогда два запроса, такие как следующий, могут дать вам два значения, которые являются соответствующим количеством секунд с момента Epoch. Вы можете вычесть последнее на первое и получить разницу во времени

    select unix_timestamp(eventTime) ... where status='pending'
    
    select unix_timestamp(eventTime) ... where status='success'
    

    Обновить

    После перечитывания вашего вопроса я предполагаю, что ваш дизайн БД заключается в том, что существует только одна строка на весь жизненный цикл транзакции (от pendingдо success). В этом случае , если все три стороны (агент , который обновляет статусpending, агент, который обновляет статусsuccess, и агент, который должен найти разницу во времени между двумя событиями) участвуют в одном потоке, то вы можете сохранить время двух событий в памяти и просто вычислить разницу.

    Тем не менее, я думаю, что более вероятно, что три стороны-это две или три разные темы. В этом случае, я думаю, у вас должен быть какой-то механизм для передачи знаний (о первом событии) из одного потока в другой. Это можно сделать путем добавления нового столбца с именем lastUpdateTimeили путем добавления новой таблицы для отслеживания времени.

    Кстати, если вы используете второй подход, я думаю, что MySQL Trigger может быть полезен для вас (так что всякий раз, когда таблица обновляется, она запускает другую команду для обновления второй таблицы, которая используется исключительно для отслеживания времени события истекшего времени). Такой подход позволяет не менять исходную таблицу,а просто добавлять новую.