MariaDB
 sql >> Database >  >> RDS >> MariaDB

Come funziona FROM_UNIXTIME() in MariaDB

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'