Я не смог узнать (googling, чтение справочника mysql), как получить значение DATETIME в секундах в MySQL.
Я не хочу извлекать секунды из datetime, но чтобы преобразовать его в секунды.
Я не смог узнать (googling, чтение справочника mysql), как получить значение DATETIME в секундах в MySQL.
Я не хочу извлекать секунды из datetime, но чтобы преобразовать его в секунды.
Если вы хотите получить разницу между двумя значениями 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.
Если "преобразовать в секунды" означает "преобразовать в отметка времени UNIX" (то есть количество секунд с 1970-01-01
), то вы можете использовать функцию UNIX_TIMESTAMP
:
select UNIX_TIMESTAMP(your_datetime_field)
from your_table
where ...
И, ради полноты, для преобразования с временной отметки Unix в datetime, вы можете использовать функцию FROM_UNIXTIME
.
Используйте TIME_TO_SEC в предыдущих версиях для mysql
SELECT TIME_TO_SEC (столбец времени) FROM table
i используется в mysql
TO_SECONDS (ваша дата здесь) метод для преобразования даты в секундах с года 0
http://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
Функция UNIX_TIMESTAMP (datetime) возвращает время unix, которое является количеством секунд с 1 января по 1970 год 0000 UTC. Это может быть то, что вам нужно, но не если вы имеете дело с датами рождения, историческими датами или датами после 2037 года.
Начиная с mysql 5.5.0 вы можете использовать to_seconds()
TO_SECONDS(FIELD_NAME)
FIELD_NAME должен быть DATETIME
type
Я создал собственный запрос для вашей проблемы:
SELECT HOUR('colname') * 3600 + MINUTE('colname') * 60 + SECOND('colname')
FROM widgets
WHERE id = 1;
id = 1
если вам нужно взять определенную строку.