В MariaDB, UNIX_TIMESTAMP()
е вградена функция за дата и час, която връща времеви печат на Unix въз основа на неговия аргумент (или липса на аргумент).
Работи така:
- При обаждане без аргумент, той връща времеви печат на Unix (секунди от „1970-01-01 00:00:00“ UTC) като цяло число без знак.
- При обаждане с аргумент, той връща стойността на аргумента като секунди от „1970-01-01 00:00:00“ UTC.
Обратната функция на UNIX_TIMESTAMP()
е FROM_UNIXTIME()
.
Синтаксис
UNIX_TIMESTAMP()
може да се извика по следните два начина:
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)
Където date
е низ от дата, низ за дата и час, времеви печат или число във формат YYMMDD
или YYYYMMDD
.
Пример – Без аргумент
Ето пример за извикване на UNIX_TIMESTAMP()
без аргумент:
SELECT UNIX_TIMESTAMP();
Резултат:
+------------------+ | UNIX_TIMESTAMP() | +------------------+ | 1622502492 | +------------------+
Това ни казва, че когато изпълних това изявление, са минали 1622502492 секунди от 1970-01-01 00:00:00.
Пример – с аргумент
Ето пример с аргумент:
SELECT UNIX_TIMESTAMP('1970-01-02');
Резултат:
+------------------------------+ | UNIX_TIMESTAMP('1970-01-02') | +------------------------------+ | 50400 | +------------------------------+
В следващия пример извиквам UNIX_TIMESTAMP()
два пъти; веднъж без аргумент и веднъж с NOW()
като аргумент.
SELECT
UNIX_TIMESTAMP(),
UNIX_TIMESTAMP(NOW());
Резултат:
+------------------+-----------------------+ | UNIX_TIMESTAMP() | UNIX_TIMESTAMP(NOW()) | +------------------+-----------------------+ | 1622502678 | 1622502678 | +------------------+-----------------------+
Низ за дата и час
В горния пример NOW()
връща стойност за дата и час.
В този пример изрично предоставям низ за дата и час:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47');
Резултат:
+---------------------------------------+ | UNIX_TIMESTAMP('2020-10-30 10:23:47') | +---------------------------------------+ | 1604017427 | +---------------------------------------+
Микросекунди
UNIX_TIMESTAMP()
поддържа микросекунди:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47.123456');
Резултат:
+----------------------------------------------+ | UNIX_TIMESTAMP('2020-10-30 10:23:47.123456') | +----------------------------------------------+ | 1604017427.123456 | +----------------------------------------------+
Числови дати
Поддържат се числови дати:
SELECT UNIX_TIMESTAMP(20201030);
Резултат:
+--------------------------+ | UNIX_TIMESTAMP(20201030) | +--------------------------+ | 1603980000 | +--------------------------+
Невалиден аргумент
Когато се подадат невалидни аргументи, UNIX_TIMESTAMP()
връща null
с предупреждение:
SELECT UNIX_TIMESTAMP('Homer');
Резултат:
+-------------------------+ | UNIX_TIMESTAMP('Homer') | +-------------------------+ | NULL | +-------------------------+ 1 row in set, 1 warning (0.001 sec)
Проверете предупреждението:
SHOW WARNINGS;
Резултат:
+---------+------+-------------------------------+ | Level | Code | Message | +---------+------+-------------------------------+ | Warning | 1292 | Incorrect time value: 'Homer' | +---------+------+-------------------------------+
Твърде много аргументи
Извикване на UNIX_TIMESTAMP()
с твърде много аргументи води до грешка:
SELECT UNIX_TIMESTAMP('1970-01-02', '1970-01-03');
Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNIX_TIMESTAMP'