LindormTable prend en charge quatre fonctions temporelles pour formater les horodatages, convertir entre horodatages UNIX et horodatages locaux à la session, et calculer des différences de dates. Ces fonctions s'appliquent uniquement à LindormTable. Toutes les fonctions s'exécutent dans le fuseau horaire de la session actuelle.
Prérequis
Avant de commencer, assurez-vous d'avoir :
LindormTable version 2.7.8 ou ultérieure (pour DATE_FORMAT, FROM_UNIXTIME et DATEDIFF)
Lindorm SQL version 2.8.7.0 ou ultérieure (pour DATE_FORMAT, FROM_UNIXTIME et DATEDIFF)
LindormTable version 2.8.0 ou ultérieure et Lindorm SQL version 2.9.0.0 ou ultérieure (pour UNIX_TIMESTAMP)
Pour afficher ou mettre à niveau la version mineure du moteur LindormTable, consultez les Notes de publication de LindormTable et la rubrique Mettre à niveau la version mineure du moteur d'une instance Lindorm. Pour connaître la version de Lindorm SQL, reportez-vous aux Versions SQL.
Fonctions prises en charge
| Fonction | Description |
|---|---|
| DATE_FORMAT | Formate un horodatage en utilisant le fuseau horaire de la session actuelle. |
| FROM_UNIXTIME | Convertit une valeur de type Number (BIGINT, INTEGER, SMALLINT ou TINYINT) en horodatage en utilisant le fuseau horaire de la session actuelle. Fonction inverse de UNIX_TIMESTAMP. |
| DATEDIFF | Renvoie la différence en jours entre deux horodatages, basée uniquement sur les valeurs de date. |
| UNIX_TIMESTAMP | Convertit un horodatage ou une chaîne d'horodatage en horodatage UNIX. Renvoie une valeur DOUBLE en secondes. Fonction inverse de FROM_UNIXTIME. |
DATE_FORMAT
Formate un horodatage en utilisant le fuseau horaire de la session actuelle. Pour afficher ou définir le fuseau horaire de la session, consultez la rubrique Spécifier un fuseau horaire pour une connexion LindormTable.
Syntaxe
DATE_FORMAT(TIMESTAMP ts, STRING format)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
ts |
Oui | Horodatage à formater. |
format |
Oui | Chaîne de format composée de spécificateurs de format (par exemple, %Y-%m-%d). Les caractères ne commençant pas par % sont renvoyés tels quels. Pour la liste complète des spécificateurs pris en charge, consultez la section Spécificateurs de format. |
Exemple
Formatez l'horodatage 2024-01-01 17:20:35 sous la forme at 17:20:35 on Jan 1st, 2024 :
SELECT DATE_FORMAT('2024-01-01 17:20:35', 'at %T on %b %D, %Y');
Sortie :
+------------------------------+
| EXPR$0 |
+------------------------------+
| at 17:20:35 on JAN 1st, 2024 |
+------------------------------+
FROM_UNIXTIME
Convertit une valeur de type Number en horodatage en utilisant le fuseau horaire de la session actuelle. Il s'agit de la fonction inverse de UNIX_TIMESTAMP. Accepte les valeurs BIGINT, INTEGER, SMALLINT et TINYINT. L'entrée représente le nombre de secondes écoulées depuis 1970-01-01 00:00:00 UTC, avec conservation d'un maximum de trois décimales.
Seul le protocole MySQL permet de modifier le fuseau horaire d'une connexion. Consultez les rubriques Utiliser le protocole MySQL pour développer des applications (recommandé) et Se connecter et utiliser LindormTable avec un client MySQL.
Syntaxe
-- Convert a UNIX timestamp to a session-local timestamp.
FROM_UNIXTIME(Number seconds)
-- Convert and format the result.
-- Equivalent to: DATE_FORMAT(FROM_UNIXTIME(seconds), format)
FROM_UNIXTIME(Number seconds, STRING format)
La forme à deux paramètres équivaut à appeler DATE_FORMAT sur le résultat de la forme à un paramètre. Le paramètre format accepte les mêmes spécificateurs que DATE_FORMAT. Pour plus de détails, consultez la section Spécificateurs de format.
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
seconds |
Oui | Horodatage UNIX en secondes. Un maximum de trois décimales est conservé. La valeur représente le nombre de secondes écoulées depuis 1970-01-01 00:00:00 UTC. |
format |
Non | Chaîne de format. Utilise les mêmes spécificateurs que DATE_FORMAT. |
Exemples
Exemple 1 : Convertir un horodatage UNIX
Convertissez 10.1578 en horodatage en utilisant le fuseau horaire de la session actuelle :
SELECT FROM_UNIXTIME(10.1578);
Sortie :
+-------------------------+
| EXPR$0 |
+-------------------------+
| 1970-01-01 08:00:10.158 |
+-------------------------+
Modifiez le fuseau horaire de la session vers +03:00 et convertissez à nouveau :
-- Change the session time zone.
SET @@time_zone='+03:00';
-- Convert using the new time zone.
SELECT FROM_UNIXTIME(10.1578);
Sortie :
+-------------------------+
| EXPR$0 |
+-------------------------+
| 1970-01-01 03:00:10.158 |
+-------------------------+
Exemple 2 : Convertir et formater
Convertissez 10.1578 et formatez le résultat en utilisant le fuseau horaire de la session actuelle :
SELECT FROM_UNIXTIME(10.1578, 'at %T on %b %D, %Y');
Sortie :
+------------------------------+
| EXPR$0 |
+------------------------------+
| at 08:00:10 on JAN 1st, 1970 |
+------------------------------+
Modifiez le fuseau horaire de la session vers +03:00 et formatez à nouveau :
-- Change the session time zone.
SET @@time_zone='+03:00';
-- Convert and format using the new time zone.
SELECT FROM_UNIXTIME(10.1578, 'at %T on %b %D, %Y');
Sortie :
+------------------------------+
| EXPR$0 |
+------------------------------+
| at 03:00:10 on JAN 1st, 1970 |
+------------------------------+
DATEDIFF
Renvoie la différence en jours entre deux horodatages dans le fuseau horaire de la session actuelle. Le résultat correspond à ts1 - ts2 ; seules les valeurs de date sont comparées, les heures, minutes et secondes sont ignorées.
Résultat positif :
ts1est une date postérieure àts2.Résultat négatif :
ts1est une date antérieure àts2.Zéro :
ts1etts2tombent le même jour.
Syntaxe
DATEDIFF(TIMESTAMP ts1, TIMESTAMP ts2)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
ts1 |
Oui | Premier horodatage. |
ts2 |
Oui | Deuxième horodatage. |
Exemples
Exemple 1 : ts1 est antérieur à ts2
SELECT DATEDIFF('2024-01-01 15:30:00', '2024-01-02 00:59:59');
Sortie :
+--------+
| EXPR$0 |
+--------+
| -1 |
+--------+
Exemple 2 : ts1 est postérieur à ts2
SELECT DATEDIFF('2024-01-05 15:30:00', '2024-01-02 00:59:59');
Sortie :
+--------+
| EXPR$0 |
+--------+
| 3 |
+--------+
Exemple 3 : ts1 et ts2 tombent le même jour
Les horaires diffèrent, mais la date est identique, donc le résultat est 0 :
SELECT DATEDIFF('2024-01-02 15:30:00', '2024-01-02 00:59:59');
Sortie :
+--------+
| EXPR$0 |
+--------+
| 0 |
+--------+
UNIX_TIMESTAMP
Convertit un horodatage ou une chaîne d'horodatage en horodatage UNIX. Renvoie une valeur DOUBLE. Il s'agit de la fonction inverse de FROM_UNIXTIME.
UNIX_TIMESTAMP nécessite LindormTable version 2.8.0 ou ultérieure et Lindorm SQL version 2.9.0.0 ou ultérieure. Mettez à niveau la version mineure du moteur LindormTable dans la console Lindorm si nécessaire.
La précision de la valeur renvoyée dépend du type d'entrée :
Entrée TIMESTAMP : 3 décimales conservées.
Entrée VARCHAR : la chaîne d'horodatage représente l'horodatage dans le fuseau horaire de la session actuelle. Un maximum de 6 décimales est conservé.
Vous pouvez utiliser UNIX_TIMESTAMP dans :
La projection (liste des colonnes) d'une instruction SELECT
La clause WHERE d'une instruction SELECT
La clause VALUES d'une instruction UPSERT
Syntaxe
UNIX_TIMESTAMP(ts)
Paramètres
| Paramètre | Obligatoire | Description |
|---|---|---|
ts |
Oui | Horodatage à convertir. Doit être de type TIMESTAMP ou VARCHAR. |
Exemples
Créez une table et insérez des exemples de données :
-- Create a table with TIMESTAMP and VARCHAR timestamp columns.
CREATE TABLE t1(p1 INT, c1 TIMESTAMP, c2 VARCHAR, c3 DOUBLE, PRIMARY KEY(p1));
-- Insert sample rows.
UPSERT INTO t1(p1, c1, c2, c3) VALUES
(1, '2025-01-01 08:30:00', '2025-01-01 08:30:00', '12.24'),
(2, '1970-01-01 08:00:00.123', '1970-01-01 08:00:00.123', '10.32'),
(3, '1970-01-01 08:00:10.13579', '1970-01-01 08:00:10.13579', '10.12'),
(4, '1970-01-01 08:00:10.123456789','1970-01-01 08:00:10.123456789','17.33');
Exemple 1 : Interroger les horodatages UNIX depuis une table
Les valeurs TIMESTAMP (c1) conservent 3 décimales ; les valeurs VARCHAR (c2) conservent jusqu'à 6 décimales.
SELECT p1, UNIX_TIMESTAMP(c1), UNIX_TIMESTAMP(c2) FROM t1;
Sortie :
+----+------------+------------+
| p1 | EXPR$1 | EXPR$2 |
+----+------------+------------+
| 1 | 1735691400 | 1735691400 |
| 2 | 0.123 | 0.123 |
| 3 | 10.135 | 10.13579 |
| 4 | 10.123 | 10.123457 |
+----+------------+------------+
Exemple 2 : Filtrer les lignes en utilisant UNIX_TIMESTAMP dans une clause WHERE
Comptez les lignes dont l'horodatage UNIX de c1 est supérieur à 10 :
SELECT COUNT(*) FROM t1 WHERE UNIX_TIMESTAMP(c1) > 10;
Sortie :
+--------+
| EXPR$0 |
+--------+
| 3 |
+--------+
Exemple 3 : Écrire un résultat UNIX_TIMESTAMP dans une colonne DOUBLE
Utilisez UNIX_TIMESTAMP dans une clause VALUES pour écrire directement le résultat dans la colonne DOUBLE c3 :
UPSERT INTO t1(p1, c3) VALUES(1, UNIX_TIMESTAMP('1970-01-01 08:00:00.123'));
Pour vérifier le résultat, exécutez :
SELECT * FROM t1;
Spécificateurs de format
Les spécificateurs de format suivants sont pris en charge par DATE_FORMAT et FROM_UNIXTIME.
Les caractères de la chaîne de format qui ne commencent pas par % sont renvoyés tels quels.
| Spécificateur | Sortie | Description |
|---|---|---|
%a |
Sun to Sat | Nom abrégé du jour de la semaine. |
%b |
Jan to Dec | Nom abrégé du mois. |
%c |
0 à 12 | Mois sous forme de valeur numérique. |
%D |
1st, 2nd, 3rd... | Jour du mois avec suffixe ordinal. |
%d |
00 à 31 | Jour du mois, deux chiffres. |
%e |
00 à 31 | Jour du mois, deux chiffres. |
%f |
000000 à 999999 | Microsecondes. |
%H |
00 à 23 | Heure au format 24 heures, deux chiffres. |
%h |
01 à 12 | Heure au format 12 heures, deux chiffres. |
%I |
01 à 12 | Heure au format 12 heures, deux chiffres. |
%i |
00 à 59 | Minutes, deux chiffres. |
%j |
001 à 366 | Jour de l'année, trois chiffres. |
%k |
0 à 23 | Heure au format 24 heures, numérique. |
%l |
1 à 12 | Heure au format 12 heures, numérique. |
%M |
January à December | Nom complet du mois. |
%m |
01 à 12 | Mois, deux chiffres. |
%p |
AM ou PM | Indicateur AM/PM. |
%r |
hh:mm:ss AM/PM | Heure au format 12 heures. |
%S |
00 à 59 | Secondes, deux chiffres. |
%s |
00 à 59 | Secondes, deux chiffres. |
%T |
hh:mm:ss | Heure au format 24 heures. |
%W |
Sunday à Saturday | Nom complet du jour de la semaine. |
%w |
0 à 6 | Jour de la semaine sous forme de nombre. 0 = dimanche, 1 = lundi. |
%Y |
Année à quatre chiffres | Exemple : 2025. |
%y |
Année à deux chiffres | Basé sur les deux derniers chiffres de l'année. Exemple : 24 pour 2024. |
%% |
% | Un signe pourcentage littéral. |
%x |
x | Toute lettre qui n'est pas un spécificateur réservé, renvoyée telle quelle. Exemple : %U renvoie U. |