В MariaDB, FROM_UNIXTIME()
е вградена функция за дата и час, която връща стойност за дата и час на базата на дадено времеви печат на unix.
Вие предавате unix timestamp на функцията, когато я извикате.
Резултатът се връща в 'YYYY-MM-DD HH:MM:SS'
или YYYYMMDDHHMMSS.uuuuuu
формат, в зависимост от това дали функцията се използва в низов или числов контекст.
Стойността се изразява в текущата часова зона.
Синтаксис
Функцията може да се използва по следните начини:
FROM_UNIXTIME(unix_timestamp)
FROM_UNIXTIME(unix_timestamp,format)
Където unix_timestamp
е времевата марка на unix и format
е незадължителен низ за форматиране за форматиране на резултата.
Пример
Ето един пример:
SELECT FROM_UNIXTIME(1721428321);
Резултат:
+---------------------------+ | FROM_UNIXTIME(1721428321) | +---------------------------+ | 2024-07-20 08:32:01 | +---------------------------+
Микросекунди
Ето пример, който включва микросекунди:
SELECT FROM_UNIXTIME(1721428321.123456);
Резултат:
+----------------------------------+ | FROM_UNIXTIME(1721428321.123456) | +----------------------------------+ | 2024-07-20 08:32:01.123456 | +----------------------------------+
Числов контекст
Когато използвате FROM_UNIXTIME()
в числов контекст, резултатът се връща в YYYYMMDDHHMMSS.uuuuuu
формат:
SELECT FROM_UNIXTIME(1721428321.123456) + 0;
Резултат:
+--------------------------------------+ | FROM_UNIXTIME(1721428321.123456) + 0 | +--------------------------------------+ | 20240720083201.123456 | +--------------------------------------+
Форматирайте резултата
Ето пример за предаване на низ за форматиране за форматиране на резултата:
SELECT FROM_UNIXTIME(1721428321, '%W, %D %M %Y');
Резултат:
+-------------------------------------------+ | FROM_UNIXTIME(1721428321, '%W, %D %M %Y') | +-------------------------------------------+ | Saturday, 20th July 2024 | +-------------------------------------------+
Вижте MariaDB низове за формат на дата за списък с низове за формат, които могат да се използват с FROM_UNIXTIME()
функция.
Ограничение за времеви отпечатъци
Отпечатъците за време в MariaDB имат максимална стойност от 2147483647
. Това се дължи на основното 32-битово ограничение. Използването на функцията върху времева марка извън това води до null
се връща.
Ето пример, който демонстрира това ограничение:
SELECT
FROM_UNIXTIME(2147483647),
FROM_UNIXTIME(2147483648);
Резултат:
+---------------------------+---------------------------+ | FROM_UNIXTIME(2147483647) | FROM_UNIXTIME(2147483648) | +---------------------------+---------------------------+ | 2038-01-19 13:14:07 | NULL | +---------------------------+---------------------------+
Часова зона
Резултатът от FROM_UNIXTIME()
се изразява в текущата часова зона.
Следните примери използват едно и също времево клеймо на Unix с различни часови зони:
SET time_zone = 'America/New_York';
SELECT FROM_UNIXTIME(2147483647);
Резултат:
+---------------------------+ | FROM_UNIXTIME(2147483647) | +---------------------------+ | 2038-01-18 22:14:07 | +---------------------------+
Превключете към друга часова зона и я стартирайте отново:
SET time_zone = 'Africa/Abidjan';
SELECT FROM_UNIXTIME(2147483647);
Резултат:
+---------------------------+ | FROM_UNIXTIME(2147483647) | +---------------------------+ | 2038-01-19 03:14:07 | +---------------------------+
Текуща клеймо за време на Unix
Ето пример, който използва UNIX_TIMESTAMP()
функция за връщане на текущото времеви печат на unix:
SELECT
UNIX_TIMESTAMP(),
FROM_UNIXTIME(UNIX_TIMESTAMP());
Резултат:
+------------------+---------------------------------+ | UNIX_TIMESTAMP() | FROM_UNIXTIME(UNIX_TIMESTAMP()) | +------------------+---------------------------------+ | 1621734047 | 2021-05-23 11:40:47 | +------------------+---------------------------------+
Липсващ аргумент
Извикване на FROM_UNIXTIME()
с грешен брой аргументи или без подаване на аргументи, води до грешка:
SELECT FROM_UNIXTIME();
Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'
И още един пример:
SELECT FROM_UNIXTIME( 1, 2, 3 );
Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'