Подтвердить что ты не робот

MYSQL - время от времени до секунд

Я не смог узнать (googling, чтение справочника mysql), как получить значение DATETIME в секундах в MySQL.

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

4b9b3361

Ответ 1

Если вы хотите получить разницу между двумя значениями DATETIME, используйте TIMESTAMPDIFF:

TIMESTAMPDIFF (единица измерения, datetime_expr1, datetime_expr2)

Возвращает datetime_expr2 – datetime_expr1, где datetime_expr1 и datetime_expr2 являются выражениями date или datetime. Одно выражение может быть датой, а другое датой-временем; значение даты рассматривается как дата-время, имеющее временную часть "00: 00: 00", где это необходимо. Единица для результата (целое число) задается аргументом единицы. Допустимые значения для единицы такие же, как перечисленные в описании функции TIMESTAMPADD().

mysql> SELECT TIMESTAMPDIFF(MONTH,'2003-02-01','2003-05-01');  
    -> 3  



mysql> SELECT TIMESTAMPDIFF(YEAR,'2002-05-01','2001-01-01');  
    -> -1  


mysql> SELECT TIMESTAMPDIFF(MINUTE,'2003-02-01','2003-05-01 12:05:55');  
    -> 128885

unit может быть также HOUR который вы и просили в одном из комментариев.

Аргумент unit может быть любым из следующих:

  • микросекунда
  • ВТОРОЙ
  • МИНУТЫ
  • ЧАС
  • ДЕНЬ
  • НЕДЕЛЮ
  • МЕСЯЦ
  • КВАРТАЛ
  • ГОД

Уровень полезности некоторых других опций будет, конечно, определяться гранулярностью данных. Например, "MICROSECOND" будет иметь ограниченное использование, только если вы не сохраняете микросекунды в своих значениях DATETIME.

Ответ 2

Если "преобразовать в секунды" означает "преобразовать в отметка времени UNIX" (то есть количество секунд с 1970-01-01), то вы можете использовать функцию UNIX_TIMESTAMP:

select UNIX_TIMESTAMP(your_datetime_field)
from your_table
where ...


И, ради полноты, для преобразования с временной отметки Unix в datetime, вы можете использовать функцию FROM_UNIXTIME.

Ответ 3

Используйте TIME_TO_SEC в предыдущих версиях для mysql

SELECT TIME_TO_SEC (столбец времени) FROM table

Ответ 5

Функция UNIX_TIMESTAMP (datetime) возвращает время unix, которое является количеством секунд с 1 января по 1970 год 0000 UTC. Это может быть то, что вам нужно, но не если вы имеете дело с датами рождения, историческими датами или датами после 2037 года.

Ответ 6

Начиная с mysql 5.5.0 вы можете использовать to_seconds()

TO_SECONDS(FIELD_NAME)

FIELD_NAME должен быть DATETIME type

Ответ 7

Я создал собственный запрос для вашей проблемы:

SELECT HOUR('colname') * 3600 + MINUTE('colname') * 60 + SECOND('colname')
FROM widgets
WHERE id = 1;
  • Используйте id = 1 если вам нужно взять определенную строку.
  • Выход будет в секундах.