MySQL - дата и время к секундам

Я не смог узнать (поиск с помощью Google, читая mysql справочник), как получить значение ДАТЫ И ВРЕМЕНИ в секундах в MySQL.

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

33
задан arogachev 30 April 2015 в 09:59
поделиться

3 ответа

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

TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2)

Возвращает datetime_expr2 - datetime_expr1, где datetime_expr1 и datetime_expr2 - выражения даты или времени. Одно из выражений может быть датой, а другое - временем; значение даты рассматривается как время, имеющее, при необходимости, временную часть '00:00:00'. Единица измерения результата (целое число) задается аргументом unit. Допустимые значения для unit те же, что и в описании функции 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
  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • QUARTER
  • YEAR

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

35
ответ дан 27 November 2019 в 17:41
поделиться

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

select UNIX_TIMESTAMP(your_datetime_field)
from your_table
where ...


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

42
ответ дан 27 November 2019 в 17:41
поделиться

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

2
ответ дан 27 November 2019 в 17:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: