UNIX_TIMESTAMP
Синтаксис
UNIX_TIMESTAMP() UNIX_TIMESTAMP(date)
Описание
Если вызывается без аргумента, возвращает метку времени Unix (секунды с момента «1970-01-01 00:00:00» UTC) в виде целого неотрицательного числа. Если UNIX_TIMESTAMP() вызывается с аргументом даты, возвращает значение аргумента в секундах с момента «1970-01-01 00:00:00» UTC. Аргумент даты может быть строкой DATE, строкой DATETIME, TIMESTAMP, или числом в формате YYMMDD или YYYYMMDD. Сервер интерпретирует дату как значение в текущем часовом поясе и преобразует его во внутреннее значение в UTC. Клиенты могут установить свой часовой пояс, как описано в часовых поясах.
Обратной функцией к UNIX_TIMESTAMP() является FROM_UNIXTIME()
UNIX_TIMESTAMP() поддерживает микросекунды.
Максимальное значение метки времени в MariaDB равно 2147483647, что эквивалентно 2038-01-19 05:14:07. Это связано с ограничением 32-битного типа данных. Использование функции для даты, превышающей это значение, приведет к возвращению NULL. Используйте DATETIME как тип хранения, если вам нужны даты, превышающие это значение.
Обработка ошибок
Возвращает NULL при неправильных аргументах для UNIX_TIMESTAMP(). В MySQL и MariaDB до версии 5.3 неправильные аргументы для UNIX_TIMESTAMP() возвращали 0.
Совместимость
Как видно из примеров выше, UNIX_TIMESTAMP(строка_константы_даты) возвращает метку времени с 6 десятичными знаками, в то время как MariaDB 5.2 и более ранние версии возвращают ее без десятичных знаков. Это может вызвать проблемы, если вы используете UNIX_TIMESTAMP() как функцию разбиения данных. Вы можете исправить это, используя FLOOR(UNIX_TIMESTAMP(..)) или изменив строку даты на числовое представление даты, например 20080101000000.
Примеры
SELECT UNIX_TIMESTAMP();
+------------------+
| UNIX_TIMESTAMP() |
+------------------+
| 1269711082 |
+------------------+
SELECT UNIX_TIMESTAMP('2007-11-30 10:30:19');
+---------------------------------------+
| UNIX_TIMESTAMP('2007-11-30 10:30:19') |
+---------------------------------------+
| 1196436619.000000 |
+---------------------------------------+
SELECT UNIX_TIMESTAMP("2007-11-30 10:30:19.123456");
+----------------------------------------------+
| unix_timestamp("2007-11-30 10:30:19.123456") |
+----------------------------------------------+
| 1196411419.123456 |
+----------------------------------------------+
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP('2007-11-30 10:30:19'));
+------------------------------------------------------+
| FROM_UNIXTIME(UNIX_TIMESTAMP('2007-11-30 10:30:19')) |
+------------------------------------------------------+
| 2007-11-30 10:30:19.000000 |
+------------------------------------------------------+
SELECT FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP('2007-11-30 10:30:19')));
+-------------------------------------------------------------+
| FROM_UNIXTIME(FLOOR(UNIX_TIMESTAMP('2007-11-30 10:30:19'))) |
+-------------------------------------------------------------+
| 2007-11-30 10:30:19 |
+-------------------------------------------------------------+
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/unix_timestamp/