MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como UNIX_TIMESTAMP() funciona no MariaDB


No MariaDB, UNIX_TIMESTAMP() é uma função interna de data e hora que retorna um carimbo de data/hora do Unix, com base em seu argumento (ou falta de argumento).

Funciona assim:
  • Quando chamado sem um argumento, ele retorna um timestamp Unix (segundos desde '1970-01-01 00:00:00' UTC) como um inteiro sem sinal.
  • Quando chamado com um argumento, ele retorna o valor do argumento como segundos desde '1970-01-01 00:00:00' UTC.

A função inversa de UNIX_TIMESTAMP() é FROM_UNIXTIME() .

Sintaxe


UNIX_TIMESTAMP() pode ser chamado de duas maneiras:
UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)

Onde date é uma string de data, uma string de data e hora, um carimbo de data/hora ou um número no formato YYMMDD ou YYYYMMDD .

Exemplo – Sem um argumento


Aqui está um exemplo de chamada de UNIX_TIMESTAMP() sem argumento:
SELECT UNIX_TIMESTAMP();

Resultado:
+------------------+
| UNIX_TIMESTAMP() |
+------------------+
|       1622502492 |
+------------------+

Isso nos diz que, quando executei essa instrução, 1622502492 segundos se passaram desde 1970-01-01 00:00:00.

Exemplo – Com um argumento


Aqui está um exemplo com um argumento:
SELECT UNIX_TIMESTAMP('1970-01-02');

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

No exemplo a seguir, chamo UNIX_TIMESTAMP() duas vezes; uma vez sem argumento e uma vez com NOW() como o argumento.
SELECT 
    UNIX_TIMESTAMP(),
    UNIX_TIMESTAMP(NOW());

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

String de data e hora


No exemplo acima, NOW() retorna um valor de data e hora.

Neste exemplo, forneço explicitamente uma string de data e hora:
SELECT UNIX_TIMESTAMP('2020-10-30 10:23:47');

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

Microsegundos


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

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

Datas numéricas


Datas numéricas são suportadas:
SELECT UNIX_TIMESTAMP(20201030);

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

Argumento inválido


Ao passar qualquer argumento inválido, UNIX_TIMESTAMP() retorna null com um aviso:
SELECT UNIX_TIMESTAMP('Homer');

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

Confira o aviso:
SHOW WARNINGS;

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

Muitos argumentos


Chamando UNIX_TIMESTAMP() com muitos argumentos resulta em um erro:
SELECT UNIX_TIMESTAMP('1970-01-02', '1970-01-03');

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