MYSQL - дата и время в секундах - PullRequest
32 голосов
/ 13 марта 2010

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

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

Ответы [ 7 ]

40 голосов
/ 13 марта 2010

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

select UNIX_TIMESTAMP(your_datetime_field)
from your_table
where ...


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

33 голосов
/ 13 марта 2010

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

TIMESTAMPDIFF (единица, datetime_expr1, datetime_expr2)

Возвращает datetime_expr2 – datetime_expr1, где datetime_expr1 и datetime_expr2 - выражения даты или даты и времени. Одно выражение может быть датой, а другое датой-временем; значение даты рассматривается как дата-время, имеющее, где необходимо, часть времени «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.

7 голосов
/ 03 октября 2013

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

SELECT TIME_TO_SEC (столбец времени) ИЗ таблицы

3 голосов
/ 14 сентября 2011

я использовал в MySQL

TO_SECONDS (здесь указывается ваша дата) для преобразования даты в секунды из года 0

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html

2 голосов
/ 06 февраля 2013

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

TO_SECONDS(FIELD_NAME)

FIELD_NAME должно быть DATETIME тип

2 голосов
/ 13 марта 2010

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

0 голосов
/ 11 апреля 2017

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

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