


Разница дат с временем в MySQL
В БД есть поле TIMESTAMP. Мне нужно получить сколько прошло от даты, которая указана в БД, до текущего времени. Делаю запрос:
SELECT NOW(), date, (NOW() - date) as delta FROM tbl
Вот результат:
NOW() | date | delta
2023-10-04 20:44:39 | 2023-10-04 20:33:55 | 1084
И, собственно, вопрос: а что это за цифра в delta?
ДополненВменяемый вид, в моем случае в секундах, можно получить функцией TIMESTAMPDIFF:
SELECT NOW(), date, TIMESTAMPDIFF(SECOND, date, NOW()) as delta FROM tbl
Это разница между NOW() и date, но...
Как сказано в документации MySQL по функции NOW(),
Returns the current date and time as a value in 'YYYY-MM-DD hh:mm:ss' or YYYYMMDDhhmmss format, depending on whether the function is used in string or numeric context.
Поскольку операция вычитания явно относится к numeric context, значения timestamp приводятся к виду 20231004204439 и 20231004203355, а разница этих значений и даёт 1084.
Очевидно, это разница между текущим временем и тем, которое хранится в твоей таблице.
Но! Не во всех базах она будет такой, как указано выше.
Все зависит от внутреннего представления.
Например, в Оракле время представлено в днях с первого января 1800-го года ЕМНИП.
Т. е. такой же запрос дал бы число 0,076 примерно.
Поэтому пользуйся этой штукой с осторожностью.