Spec-Zone.ru › MariaDB

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                                         |
+-------------------------------------------------------------+

См. также

  • FROM_UNIXTIME()
Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительной проверки MariaDB. Мнения, информация и мнения, выраженные в этом содержимом, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API