Я не смог узнать (поиск с помощью Google, читая mysql справочник), как получить значение ДАТЫ И ВРЕМЕНИ в секундах в MySQL.
Я не означаю извлекать секунды из даты и времени, но преобразовывать ее в секунды.
Если вы хотите получить разницу между двумя значениями 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" будет иметь ограниченное применение, если вы не храните микросекунды в своих значениях DATETIME.
Если под « преобразовать в секунды » вы имеете в виду « преобразовать в UNIX Timestamp » (т.е. количество секунд с 1970-01-01
) , тогда вы можете использовать функцию UNIX_TIMESTAMP
:
select UNIX_TIMESTAMP(your_datetime_field)
from your_table
where ...
И для полноты картины чтобы преобразовать метку времени Unix в дату и время, вы можете использовать функцию FROM_UNIXTIME
.
Функция UNIX_TIMESTAMP(datetime) возвращает время unix, которое оказывается количеством секунд с 1 января 1970 года 0000 UTC. Это может быть то, что вам нужно, но не в том случае, если вы имеете дело с датами рождения, историческими датами или датами после 2037 года.