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

Come funziona UNIX_TIMESTAMP() in MariaDB

In MariaDB, UNIX_TIMESTAMP() è una funzione di data e ora incorporata che restituisce un timestamp Unix, in base al suo argomento (o mancanza di argomento).

Funziona così:

  • Quando chiamato senza un argomento, restituisce un timestamp Unix (secondi da '1970-01-01 00:00:00' UTC) come intero senza segno.
  • Quando chiamato con un argomento, restituisce il valore dell'argomento in secondi da '1970-01-01 00:00:00' UTC.

La funzione inversa di UNIX_TIMESTAMP() è FROM_UNIXTIME() .

Sintassi

UNIX_TIMESTAMP() può essere chiamato nei due modi seguenti:

UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)

Dove date è una stringa di data, una stringa di data e ora, un timestamp o un numero nel formato YYMMDD o YYYYMMDD .

Esempio – Senza un argomento

Ecco un esempio di chiamata a UNIX_TIMESTAMP() senza argomenti:

SELECT UNIX_TIMESTAMP();

Risultato:

+------------------+
| UNIX_TIMESTAMP() |
+------------------+
|       1622502492 |
+------------------+

Questo ci dice che quando ho eseguito quella dichiarazione, erano trascorsi 1622502492 secondi da 1970-01-01 00:00:00.

Esempio:con un argomento

Ecco un esempio con un argomento:

SELECT UNIX_TIMESTAMP('1970-01-02');

Risultato:

+------------------------------+
| UNIX_TIMESTAMP('1970-01-02') |
+------------------------------+
|                        50400 |
+------------------------------+

Nell'esempio seguente, chiamo UNIX_TIMESTAMP() due volte; una volta senza argomenti e una volta con NOW() come argomento.

SELECT 
    UNIX_TIMESTAMP(),
    UNIX_TIMESTAMP(NOW());

Risultato:

+------------------+-----------------------+
| UNIX_TIMESTAMP() | UNIX_TIMESTAMP(NOW()) |
+------------------+-----------------------+
|       1622502678 |            1622502678 |
+------------------+-----------------------+

Stringa data/ora

Nell'esempio sopra, NOW() restituisce un valore datetime.

In questo esempio, fornisco esplicitamente una stringa datetime:

SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47');

Risultato:

+---------------------------------------+
| UNIX_TIMESTAMP('2020-10-30 10:23:47') |
+---------------------------------------+
|                            1604017427 |
+---------------------------------------+

Microsecondi

UNIX_TIMESTAMP() supporta microsecondi:

SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47.123456');

Risultato:

+----------------------------------------------+
| UNIX_TIMESTAMP('2020-10-30 10:23:47.123456') |
+----------------------------------------------+
|                            1604017427.123456 |
+----------------------------------------------+

Date numeriche

Sono supportate le date numeriche:

SELECT UNIX_TIMESTAMP(20201030);

Risultato:

+--------------------------+
| UNIX_TIMESTAMP(20201030) |
+--------------------------+
|               1603980000 |
+--------------------------+

Argomento non valido

Quando vengono passati argomenti non validi, UNIX_TIMESTAMP() restituisce null con un avviso:

SELECT UNIX_TIMESTAMP('Homer');

Risultato:

+-------------------------+
| UNIX_TIMESTAMP('Homer') |
+-------------------------+
|                    NULL |
+-------------------------+
1 row in set, 1 warning (0.001 sec)

Controlla l'avviso:

SHOW WARNINGS;

Risultato:

+---------+------+-------------------------------+
| Level   | Code | Message                       |
+---------+------+-------------------------------+
| Warning | 1292 | Incorrect time value: 'Homer' |
+---------+------+-------------------------------+

Troppi argomenti

Chiamando UNIX_TIMESTAMP() con troppi argomenti genera un errore:

SELECT UNIX_TIMESTAMP('1970-01-02', '1970-01-03');

Risultato:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNIX_TIMESTAMP'