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

Comment TIMESTAMP() fonctionne dans MariaDB

Dans MariaDB, TIMESTAMP() est une fonction de date et d'heure intégrée qui renvoie une valeur datetime, basée sur son/ses argument(s).

Il peut être utilisé avec un ou deux arguments, comme suit :

  • Lorsqu'il est utilisé avec un argument, il renvoie cette expression date ou datetime sous forme de valeur datetime.
  • Lorsqu'il est utilisé avec deux arguments, il ajoute le deuxième argument (heure) à la première expression (date ou datetime), puis renvoie la valeur datetime résultante.

Syntaxe

Il peut être utilisé des deux manières suivantes :

TIMESTAMP(expr)
TIMESTAMP(expr1,expr2)

expr1 est une expression date ou datetime, et expr2 est une expression temporelle à ajouter à expr1 .

Exemple

Voici un exemple pour illustrer :

SELECT TIMESTAMP('2030-02-01');

Résultat :

+-------------------------+
| TIMESTAMP('2030-02-01') |
+-------------------------+
| 2030-02-01 00:00:00     |
+-------------------------+

Valeurs DateHeure

Voici un exemple de transmission d'une valeur datetime :

SELECT TIMESTAMP('2030-02-01 10:30:45');

Résultat :

+----------------------------------+
| TIMESTAMP('2030-02-01 10:30:45') |
+----------------------------------+
| 2030-02-01 10:30:45              |
+----------------------------------+

Deuxième argument

Voici un exemple qui ajoute le deuxième argument au premier :

SELECT TIMESTAMP('2030-02-01 10:30:45', '02:15:15');

Résultat :

+----------------------------------------------+
| TIMESTAMP('2030-02-01 10:30:45', '02:15:15') |
+----------------------------------------------+
| 2030-02-01 12:46:00                          |
+----------------------------------------------+

Microsecondes

Voici un exemple qui ajoute des microsecondes :

SELECT TIMESTAMP('2030-02-01 10:30:45', '00:00:00.123456');

Résultat :

+-----------------------------------------------------+
| TIMESTAMP('2030-02-01 10:30:45', '00:00:00.123456') |
+-----------------------------------------------------+
| 2030-02-01 10:30:45.123456                          |
+-----------------------------------------------------+

Temps négatifs

Les heures négatives sont valides :

Exemple :

SELECT TIMESTAMP('2030-02-01 10:30:45', '-09:20:00');

Résultat :

+-----------------------------------------------+
| TIMESTAMP('2030-02-01 10:30:45', '-09:20:00') |
+-----------------------------------------------+
| 2030-02-01 01:10:45                           |
+-----------------------------------------------+

Date actuelle

Nous pouvons passer NOW() comme argument datetime pour utiliser la date et l'heure actuelles :

SELECT 
    NOW(),
    TIMESTAMP(NOW(), '10:30:45');

Résultat :

+---------------------+------------------------------+
| NOW()               | TIMESTAMP(NOW(), '10:30:45') |
+---------------------+------------------------------+
| 2021-05-28 09:25:09 | 2021-05-28 19:55:54          |
+---------------------+------------------------------+

Arguments invalides

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

SELECT TIMESTAMP('Ten Thirty AM');

Résultat :

+----------------------------+
| TIMESTAMP('Ten Thirty AM') |
+----------------------------+
| NULL                       |
+----------------------------+
1 row in set, 1 warning (0.004 sec)

Vérifiez l'avertissement :

SHOW WARNINGS;

Résultat :

+---------+------+---------------------------------------+
| Level   | Code | Message                               |
+---------+------+---------------------------------------+
| Warning | 1292 | Incorrect time value: 'Ten Thirty AM' |
+---------+------+---------------------------------------+

Argument manquant

Appel de TIMESTAMP() avec le mauvais nombre d'arguments, ou sans passer d'arguments, génère une erreur :

SELECT TIMESTAMP();

Résultat :

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

Et un autre exemple :

SELECT TIMESTAMP('2020-12-09', '06:30:45', '06:30:45');

Résultat :

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' '06:30:45')' at line 1