MariaDB
 sql >> Base de données >  >> RDS >> MariaDB

Comment fonctionne UNIX_TIMESTAMP() dans MariaDB

Dans MariaDB, UNIX_TIMESTAMP() est une fonction de date et d'heure intégrée qui renvoie un horodatage Unix, basé sur son argument (ou son absence d'argument).

Cela fonctionne comme ceci :

  • Lorsqu'il est appelé sans un argument, il renvoie un horodatage Unix (secondes depuis '1970-01-01 00:00:00' UTC) sous la forme d'un entier non signé.
  • Lorsqu'il est appelé avec un argument, il renvoie la valeur de l'argument en secondes depuis '1970-01-01 00:00:00' UTC.

La fonction inverse de UNIX_TIMESTAMP() est FROM_UNIXTIME() .

Syntaxe

UNIX_TIMESTAMP() peut être appelé des deux manières suivantes :

UNIX_TIMESTAMP()
UNIX_TIMESTAMP(date)

date est une chaîne de date, une chaîne de date et d'heure, un horodatage ou un nombre au format YYMMDD ou YYYYMMDD .

Exemple – Sans argument

Voici un exemple d'appel de UNIX_TIMESTAMP() sans argument :

SELECT UNIX_TIMESTAMP();

Résultat :

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

Cela nous indique que lorsque j'ai exécuté cette instruction, 1622502492 secondes s'étaient écoulées depuis le 1970-01-01 00:00:00.

Exemple – Avec un argument

Voici un exemple avec un argument :

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

Résultat :

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

Dans l'exemple suivant, j'appelle UNIX_TIMESTAMP() à deux reprises; une fois sans argument, et une fois avec NOW() comme argument.

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

Résultat :

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

Chaîne date/heure

Dans l'exemple ci-dessus, NOW() renvoie une valeur datetime.

Dans cet exemple, je fournis explicitement une chaîne datetime :

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

Résultat :

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

Microsecondes

UNIX_TIMESTAMP() prend en charge les microsecondes :

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

Résultat :

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

Dates numériques

Les dates numériques sont prises en charge :

SELECT UNIX_TIMESTAMP(20201030);

Résultat :

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

Argument invalide

Lorsqu'un argument invalide est passé, UNIX_TIMESTAMP() renvoie null avec un avertissement :

SELECT UNIX_TIMESTAMP('Homer');

Résultat :

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

Vérifiez l'avertissement :

SHOW WARNINGS;

Résultat :

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

Trop d'arguments

Appel de UNIX_TIMESTAMP() avec trop d'arguments génère une erreur :

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

Résultat :

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