Как получить разницу в секундах (минутах) между текущей датой и записью в БД PostgreSQL?
При определённом действии я заношу в БД лог с Timetamp, через N-ое количество времени, я совершаю ещё одно действие, и если прошло 2 минуты (А лучше всего 140 секунд), я получаю результат и добавляю ещё одну запись в БД, то есть обновляю последний лог и уже по нему свожу сверку.
Реализовал несколько решений, но все они мне не устраивают и имеют недостатки. Если вкратце, то при втором действии я получаю я получаю дату первого действия из БД, через
SELECT ::to_char(time_send, 'HH24:MI:SS')
Привожу результат к нужному формату через DateTime
И получаю текущую дату через new DateTime
Дальше пробовал сравнивать встроенным методом diff, как я только не пробовал и минуты и секунды.. Проблема в том, что он обнуляет счётчик секунд и минут, когда он достигнет 60, то есть я не смогу точно узнать сколько секунд или минут прошло, т.к. разница будет всегда в пределах 60.
Читал что есть параметр, который абсолютную величину выдаёт, но что-то у меня результат он так и не вывел
$diff = $last->diff($now, true);
Можно конечно получать время через time() или date() делать кучу преобразований и вычитать, но хочется адекватный изящный способ найти. В идеале в 1 строку без PHP, запрос в PostGRE, где идёт проверка со ячейкой содержащий дату. Если прошло 140 секунд то возвращаем тру, не прошло то фолс, ну или хотя бы вернуть количество единиц прошедшего времени..