In MariaDB, FROM_UNIXTIME()
è una funzione di data e ora incorporata che restituisce un valore datetime basato su un determinato timestamp unix.
Passi il timestamp unix alla funzione quando la chiami.
Il risultato viene restituito in 'YYYY-MM-DD HH:MM:SS'
o YYYYMMDDHHMMSS.uuuuuu
formato, a seconda che la funzione sia utilizzata in un contesto stringa o numerico.
Il valore è espresso nel fuso orario corrente.
Sintassi
La funzione può essere utilizzata nei seguenti modi:
FROM_UNIXTIME(unix_timestamp)
FROM_UNIXTIME(unix_timestamp,format)
Dove unix_timestamp
è il timestamp unix e il format
è una stringa di formato opzionale per formattare il risultato.
Esempio
Ecco un esempio:
SELECT FROM_UNIXTIME(1721428321);
Risultato:
+---------------------------+ | FROM_UNIXTIME(1721428321) | +---------------------------+ | 2024-07-20 08:32:01 | +---------------------------+
Microsecondi
Ecco un esempio che include microsecondi:
SELECT FROM_UNIXTIME(1721428321.123456);
Risultato:
+----------------------------------+ | FROM_UNIXTIME(1721428321.123456) | +----------------------------------+ | 2024-07-20 08:32:01.123456 | +----------------------------------+
Contesto numerico
Quando si utilizza FROM_UNIXTIME()
in un contesto numerico, il risultato viene restituito in YYYYMMDDHHMMSS.uuuuuu
formato:
SELECT FROM_UNIXTIME(1721428321.123456) + 0;
Risultato:
+--------------------------------------+ | FROM_UNIXTIME(1721428321.123456) + 0 | +--------------------------------------+ | 20240720083201.123456 | +--------------------------------------+
Formatta il risultato
Ecco un esempio di passaggio di una stringa di formato per formattare il risultato:
SELECT FROM_UNIXTIME(1721428321, '%W, %D %M %Y');
Risultato:
+-------------------------------------------+ | FROM_UNIXTIME(1721428321, '%W, %D %M %Y') | +-------------------------------------------+ | Saturday, 20th July 2024 | +-------------------------------------------+
Vedere MariaDB Date Format Strings per un elenco di stringhe di formato che possono essere utilizzate con FROM_UNIXTIME()
funzione.
Limite timestamp
I timestamp in MariaDB hanno un valore massimo di 2147483647
. Ciò è dovuto alla limitazione sottostante a 32 bit. L'utilizzo della funzione su un timestamp oltre questo risulta in null
in fase di restituzione.
Ecco un esempio che dimostra questa limitazione:
SELECT
FROM_UNIXTIME(2147483647),
FROM_UNIXTIME(2147483648);
Risultato:
+---------------------------+---------------------------+ | FROM_UNIXTIME(2147483647) | FROM_UNIXTIME(2147483648) | +---------------------------+---------------------------+ | 2038-01-19 13:14:07 | NULL | +---------------------------+---------------------------+
Fuso orario
Il risultato di FROM_UNIXTIME()
è espresso nel fuso orario corrente.
Gli esempi seguenti utilizzano lo stesso timestamp Unix con fusi orari diversi:
SET time_zone = 'America/New_York';
SELECT FROM_UNIXTIME(2147483647);
Risultato:
+---------------------------+ | FROM_UNIXTIME(2147483647) | +---------------------------+ | 2038-01-18 22:14:07 | +---------------------------+
Passa a un altro fuso orario ed eseguilo di nuovo:
SET time_zone = 'Africa/Abidjan';
SELECT FROM_UNIXTIME(2147483647);
Risultato:
+---------------------------+ | FROM_UNIXTIME(2147483647) | +---------------------------+ | 2038-01-19 03:14:07 | +---------------------------+
Timestamp Unix attuale
Ecco un esempio che utilizza UNIX_TIMESTAMP()
funzione per restituire il timestamp Unix corrente:
SELECT
UNIX_TIMESTAMP(),
FROM_UNIXTIME(UNIX_TIMESTAMP());
Risultato:
+------------------+---------------------------------+ | UNIX_TIMESTAMP() | FROM_UNIXTIME(UNIX_TIMESTAMP()) | +------------------+---------------------------------+ | 1621734047 | 2021-05-23 11:40:47 | +------------------+---------------------------------+
Argomento mancante
Chiamando FROM_UNIXTIME()
con il numero errato di argomenti, o senza passare alcun argomento, si verifica un errore:
SELECT FROM_UNIXTIME();
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'
E un altro esempio:
SELECT FROM_UNIXTIME( 1, 2, 3 );
Risultato:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'FROM_UNIXTIME'