Horodatage actuel MySQL : comment obtenir la date et l’heure actuelles (NOW, SYSDATE, UTC_TIMESTAMP)

目次

1. Introduction

Obtenir l’heure actuelle dans MySQL est une partie cruciale de la gestion de bases de données.
Par exemple, vous pouvez avoir besoin de récupérer l’heure actuelle dans des situations comme les suivantes :

  • Enregistrement automatique d’un horodatage de création lors de l’insertion de données (par ex., un horodatage lorsqu’un nouvel utilisateur s’inscrit)
  • Journalisation des heures de connexion des utilisateurs (par ex., gestion de l’historique des connexions)
  • Récupération de données sur une certaine plage horaire (par ex., extraction de l’historique des commandes des dernières 24 heures)
  • Enregistrement des journaux d’exécution du système (par ex., gestion des journaux d’erreurs et des journaux d’événements)

Comme vous pouvez le constater, récupérer correctement le « temps actuel » pour la gestion des données et la journalisation est essentiel au bon fonctionnement d’une base de données.

Dans cet article, nous expliquerons comment obtenir l’heure actuelle dans MySQL en détail à l’aide de requêtes SQL réelles.
Nous couvrirons également les différences entre les fonctions les plus couramment utilisées, comment choisir la bonne, ainsi que des exemples de requêtes pratiques — utiles tant pour les débutants que pour les utilisateurs intermédiaires.

2. Fonctions MySQL pour obtenir la date/heure actuelle (Tableau comparatif)

MySQL propose plusieurs fonctions pour récupérer l’heure actuelle.
Choisir la fonction adaptée à votre cas d’utilisation est important, mais de nombreuses personnes trouvent les différences déroutantes.

Dans cette section, nous comparons les principales fonctions utilisées pour obtenir la date/heure actuelle dans MySQL et expliquons leurs caractéristiques en détail.

2.1 Tableau comparatif des fonctions temporelles MySQL

FunctionWhat it returnsFormatNotes
NOW()Current date and timeYYYY-MM-DD HH:MM:SSMost commonly used
SYSDATE()Date and time at executionYYYY-MM-DD HH:MM:SSUnlike NOW(), it can change on each execution
CURTIME()Current timeHH:MM:SSTime only (no date)
CURRENT_TIME()Current timeHH:MM:SSSame as CURTIME()
CURRENT_TIMESTAMP()Current date and timeYYYY-MM-DD HH:MM:SSAlmost the same as NOW()
UTC_TIMESTAMP()Current UTC date and timeYYYY-MM-DD HH:MM:SSTime zone is fixed to UTC

À partir du tableau ci‑dessus, la plupart des fonctions renvoient soit la « date et heure actuelles », soit l’« heure actuelle », mais la meilleure fonction dépend de votre objectif.

2.2 Vue d’ensemble et caractéristiques de chaque fonction

Fonction NOW()

  • La fonction la plus courante pour obtenir la date et l’heure actuelles
  • Retourne l’heure au moment où l’instruction SQL commence
  • Souvent utilisée pour les horodatages lors de l’insertion ou de la mise à jour de données
    SELECT NOW();
    

Exemple de sortie

2025-02-14 15:30:45

Fonction SYSDATE()

  • Obtient l’heure actuelle au moment de l’exécution
  • Contrairement à NOW(), SYSDATE() peut renvoyer une valeur différente à chaque évaluation (elle peut changer même au sein d’une transaction)
    SELECT SYSDATE();
    

Exemple de sortie

2025-02-14 15:30:47

Fonction CURTIME()

  • Renvoie uniquement l’heure (HH:MM:SS)
  • Utile lorsque la date n’est pas nécessaire
    SELECT CURTIME();
    

Exemple de sortie

15:30:45

Fonction CURRENT_TIME()

  • Fonctionne de la même manière que CURTIME()
  • Nom de fonction conforme à la norme SQL
    SELECT CURRENT_TIME();
    

Exemple de sortie

15:30:45

Fonction CURRENT_TIMESTAMP()

  • Se comporte comme NOW()
  • Peut être spécifiée comme valeur de colonne DEFAULT (souvent plus appropriée que NOW() pour les valeurs par défaut)
    SELECT CURRENT_TIMESTAMP();
    

Exemple de sortie

2025-02-14 15:30:45

Définie comme valeur par défaut lors de la création d’une table :

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

Fonction UTC_TIMESTAMP()

  • Obtient l’UTC (Temps Universel Coordonné) actuel
  • Indépendante du fuseau horaire du serveur, ce qui permet des horodatages cohérents
    SELECT UTC_TIMESTAMP();
    

Exemple de sortie

2025-02-14 06:30:45

2.3 Quelle fonction devez‑vous utiliser ?

Use caseRecommended function
Get the current date and timeNOW()
Get a different timestamp each time within a transactionSYSDATE()
Need only the current time (HH:MM:SS)CURTIME() or CURRENT_TIME()
Set as a table default valueCURRENT_TIMESTAMP()
Get UTC timeUTC_TIMESTAMP()

En général, pour la récupération typique de date/heure, NOW() est généralement le bon choix.
Cependant, choisir la fonction la plus adaptée à votre cas d’utilisation permet des opérations de données plus flexibles et fiables.

3. Détails de la fonction NOW()

La fonction MySQL NOW() est la fonction la plus couramment utilisée pour obtenir la date et l’heure actuelles (date + heure).
Elle est largement employée pour stocker des horodatages dans la base de données et récupérer des données sur des intervalles de temps spécifiques.

3.1 Utilisation de base de NOW()

Syntaxe de NOW()

SELECT NOW();

Exemple de sortie

2025-02-14 15:30:45
  • Le format de sortie est YYYY-MM-DD HH:MM:SS (année-mois-jour heure:minute:seconde).
  • L’heure est récupérée en fonction des paramètres de fuseau horaire par défaut de MySQL.

3.2 Cas d’utilisation courants de NOW()

① Enregistrer l’heure actuelle lors de l’insertion de données

Lors de l’insertion de données dans une base de données, vous pouvez utiliser NOW() pour enregistrer un horodatage de création.

INSERT INTO users (name, created_at) VALUES ('Sato', NOW());

② Enregistrer l’heure actuelle lors de la mise à jour de données

UPDATE users SET last_login = NOW() WHERE id = 1;

③ Récupérer des données d’une période donnée

SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 1 DAY;
  • En spécifiant INTERVAL 1 DAY, vous pouvez récupérer « les données des 1 jour(s) précédents ».

3.3 Type de retour et comment changer le format de sortie

Type de retour de NOW()

  • Type DATETIME (YYYY-MM-DD HH:MM:SS)
  • Il peut également être traité comme une chaîne
    SELECT NOW(), typeof(NOW());
    

Comment changer le format

SELECT DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s') AS formatted_time;

Exemple de sortie

2025-02-14 15:30:45

3.4 Différences entre NOW() et SYSDATE()

FunctionWhen it’s evaluatedNotes
NOW()At query startReturns a fixed timestamp for the statement
SYSDATE()At execution timeCan return different timestamps within the same statement
SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();

Exemple de sortie

NOW()        | SLEEP(3) | NOW()
2025-02-14 15:30:45 | wait 3 seconds | 2025-02-14 15:30:45
SYSDATE()    | SLEEP(3) | SYSDATE()
2025-02-14 15:30:45 | wait 3 seconds | 2025-02-14 15:30:48

🚨 Si vous travaillez avec des transactions, NOW() est recommandé pour la cohérence.

3.5 Limitations et notes pour NOW()

① Dépend du fuseau horaire

SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');

② Pour les valeurs par défaut des tables, utilisez CURRENT_TIMESTAMP

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

3.6 Résumé de NOW()

  • NOW() est la fonction la plus courante pour obtenir la date et l’heure actuelles dans MySQL.
  • Elle peut être utilisée pour les insertions, les mises à jour et la récupération de données basées sur le temps.
  • Utilisez NOW() lorsque vous avez besoin d’un horodatage cohérent au sein d’une transaction.
  • SYSDATE() renvoie une heure différente à chaque évaluation, donc utilisez-la lorsque vous avez besoin de l’heure exacte d’exécution.
  • Utilisez CONVERT_TZ() pour récupérer l’heure dans un fuseau horaire différent.

📌 Conclusion : Dans la plupart des cas, NOW() est le meilleur choix pour obtenir la date et l’heure actuelles dans MySQL.

4. Caractéristiques de la fonction SYSDATE()

La fonction SYSDATE() est une autre façon d’obtenir la date et l’heure actuelles dans MySQL, mais elle se comporte différemment de NOW().
Dans cette section, nous expliquerons l’utilisation de base de SYSDATE(), ses différences avec NOW(), et les notes importantes.

4.1 Qu’est-ce que SYSDATE()?

SYSDATE() est une fonction qui renvoie l’heure au moment de l’exécution de l’instruction.
Contrairement à NOW(), elle renvoie un horodatage différent à chaque évaluation.

Syntaxe de SYSDATE()

SELECT SYSDATE();

Exemple de sortie

2025-02-14 16:00:45
  • Retourné au format YYYY-MM-DD HH:MM:SS
  • Représente le moment où la requête est exécutée

4.2 Différences entre SYSDATE() et NOW()

FunctionWhen it’s evaluatedNotes
NOW()At query startReturns a fixed timestamp for the statement
SYSDATE()At execution timeReturns a different timestamp each time

Comparaison de comportement : NOW() vs SYSDATE()

SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();

Exemple de sortie

NOW()        | SLEEP(3) | NOW()
2025-02-14 16:00:45 | wait 3 seconds | 2025-02-14 16:00:45
SYSDATE()    | SLEEP(3) | SYSDATE()
2025-02-14 16:00:45 | wait 3 seconds | 2025-02-14 16:00:48

📌 Points clés

  • NOW() conserve l’horodatage depuis le début de l’instruction, donc il ne change pas.
  • SYSDATE() renvoie un horodatage différent à chaque évaluation, donc il change après 3 secondes.

🚨 Utilisez NOW() pour le traitement des transactions

  • Parce que SYSDATE() peut se comporter différemment de NOW() dans les environnements multi‑threads, NOW() est généralement recommandé pour la cohérence transactionnelle.

4.3 Exemples d’utilisation de SYSDATE()

① Enregistrer l’heure actuelle lors de l’insertion de données

INSERT INTO logs (event, created_at) VALUES ('User login', SYSDATE());

② Enregistrer l’heure actuelle lors de la mise à jour de données

UPDATE users SET last_login = SYSDATE() WHERE id = 1;

③ Obtenir l’heure actuelle dans un format spécifique

SELECT DATE_FORMAT(SYSDATE(), '%Y-%m-%d %H:%i:%s') AS formatted_time;

Exemple de sortie

2025-02-14 16:05:30

4.4 Limitations et notes pour SYSDATE()

① Comportement de la transaction

  • NOW() conserve l’horodatage depuis le début de l’instruction , donc il peut être utilisé de façon cohérente au sein d’une transaction.
  • SYSDATE() renvoie un horodatage différent à chaque fois , ce qui peut entraîner un glissement du temps au sein d’une transaction.

② Ne peut pas être utilisé comme valeur DEFAULT

  • SYSDATE() ne peut pas être défini comme valeur DEFAULT d’une colonne de table .

Solution : Utilisez DEFAULT CURRENT_TIMESTAMP.

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

4.5 Quand devez‑vous utiliser SYSDATE()?

Use caseRecommended function
Typical current timestamp retrievalNOW()
Use a consistent timestamp within a transactionNOW()
Need the exact execution timeSYSDATE()

🚀 SYSDATE() convient à la journalisation en temps réel, mais n’est pas idéal pour le traitement des transactions.

4.6 Résumé de SYSDATE()

  • SYSDATE() récupère l’horodatage au moment de l’exécution, contrairement à NOW().
  • Parce qu’il peut renvoyer des valeurs différentes à chaque fois, il est utile pour la journalisation en temps réel.
  • Pour la cohérence transactionnelle, NOW() est recommandé.
  • Pour les valeurs par défaut, utilisez CURRENT_TIMESTAMP.

📌 Conclusion : Pour la récupération générale d’horodatage, NOW() est le meilleur choix ; pour des temps d’exécution précis, choisissez SYSDATE().

5. CURTIME() et CURRENT_TIME()

Lorsque vous souhaitez obtenir l’heure actuelle dans MySQL, CURTIME() et CURRENT_TIME() sont utilisés lorsque vous avez besoin uniquement de l’heure (HH:MM:SS).
Dans cette section, nous expliquerons l’utilisation de base, les différences et des exemples pratiques pour chacun.

5.1 Qu’est‑ce que CURTIME()?

CURTIME() est une fonction qui obtient l’heure actuelle (heure, minute, seconde) dans MySQL.
Sa caractéristique principale est qu’elle n’inclut pas la date — seule la partie heure est renvoyée.

Syntaxe de CURTIME()

SELECT CURTIME();

Exemple de sortie

16:30:45
  • Format : HH:MM:SS
  • Dépend du paramètre de fuseau horaire du serveur
  • Contrairement à NOW(), elle convient lorsque vous n’avez pas besoin d’informations de date

5.2 Qu’est‑ce que CURRENT_TIME()?

CURRENT_TIME(), comme CURTIME(), est une fonction qui obtient l’heure actuelle (HH:MM:SS).
En pratique, elle se comporte exactement comme CURTIME().

Syntaxe de CURRENT_TIME()

SELECT CURRENT_TIME();

Exemple de sortie

16:30:45

📌 Quelle est la différence ?

  • CURTIME() est spécifique à MySQL
  • CURRENT_TIME() est standard SQL
  • Ils se comportent de la même façon
  • Choisissez en fonction de la préférence de lisibilité (pas de différence de performance)

5.3 CURTIME() vs CURRENT_TIME() (Comparaison)

FunctionWhat it returnsFormatNotes
CURTIME()Current time (hour/minute/second)HH:MM:SSMySQL-specific function
CURRENT_TIME()Current time (hour/minute/second)HH:MM:SSSQL-standard function

5.4 Exemples pratiques de CURTIME() / CURRENT_TIME()

① Enregistrer l’heure actuelle lors de l’insertion de données

INSERT INTO user_logs (event, event_time) VALUES ('Login', CURTIME());

② Filtrage (récupérer des données dans une plage horaire spécifique)

SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';

③ Modifier la précision (inclure les millisecondes)

SELECT CURTIME(3);  -- Display up to 3 fractional digits

Exemple de sortie

16:30:45.123

5.5 Limitations et notes pour CURTIME() / CURRENT_TIME()

① Pas d’information de date, donc combinez avec une date si nécessaire

SELECT CONCAT(CURDATE(), ' ', CURTIME()) AS full_datetime;

② Lors de l’utilisation comme valeur DEFAULT

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    event_time TIME DEFAULT CURTIME()
);

5.6 Quand devez‑vous utiliser CURTIME() / CURRENT_TIME()?

Use caseRecommended function
Need only the current time (hour/minute/second)CURTIME() or CURRENT_TIME()
Need current date and timeNOW()
Need millisecond precisionCURTIME(3)

📌 Dans la plupart des cas, soit CURTIME() soit CURRENT_TIME() fonctionne correctement.
Choisissez celle que vous trouvez la plus lisible.

5.7 Résumé de CURTIME() / CURRENT_TIME()

  • CURTIME() est spécifique à MySQL ; CURRENT_TIME() est conforme à la norme SQL
  • Les deux récupèrent l’heure actuelle (HH:MM:SS)
  • Utilisez CURTIME(3) ou DATE_FORMAT() pour ajuster le format/la précision
  • Si vous avez besoin d’une date, combinez avec CURDATE() ou utilisez NOW()
  • Pour les valeurs par défaut, CURRENT_TIMESTAMP est couramment utilisé

📌 Conclusion : Si vous avez seulement besoin de l’heure actuelle, CURTIME() est un bon choix.

6. Exemples de requêtes pratiques utilisant l’heure actuelle

Maintenant que vous comprenez comment récupérer l’heure actuelle dans MySQL, examinons des façons pratiques de l’utiliser.
Dans cette section, nous présenterons des exemples de requêtes réelles utilisant l’heure actuelle.
Vous apprendrez des techniques utiles pour les tâches quotidiennes de base de données telles que les insertions, les mises à jour et les recherches.

6.1 Enregistrer l’heure actuelle lors de l’insertion de données

① Enregistrer l’heure actuelle lorsqu’un utilisateur s’inscrit

INSERT INTO users (name, email, created_at) 
VALUES ('Sato', 'sato@example.com', NOW());

6.2 Enregistrer l’heure actuelle lors de la mise à jour de données

② Enregistrer l’horodatage du dernier login de l’utilisateur

UPDATE users SET last_login = NOW() WHERE id = 1;

6.3 Récupérer les données des N derniers jours

③ Récupérer les données de commande des 7 derniers jours

SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;

6.4 Récupérer les données créées dans une plage horaire spécifique

④ Récupérer les données créées aujourd’hui entre 9h00 et 18h00

SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';

6.5 Récupérer l’heure actuelle en tenant compte des fuseaux horaires

⑤ Convertir l’heure UTC en heure du Japon (JST)

SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');

6.6 Définir l’heure de création d’un enregistrement à l’horodatage actuel par défaut

⑥ Définir automatiquement created_at à l’horodatage actuel

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    event VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

6.7 Supprimer les données après un certain temps

⑦ Supprimer les données de plus de 30 jours

DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;

6.8 Obtenir l’heure actuelle avec une précision milliseconde (microseconde)

⑧ Obtenir l’horodatage actuel avec une précision milliseconde

SELECT NOW(3);

Exemple de sortie

2025-02-14 16:30:45.123

6.9 Guide de sélection des cas d’utilisation

Use caseRecommended functionExample
Record the current time when inserting dataNOW()INSERT INTO users (name, created_at) VALUES ('Sato', NOW());
Record the current time when updating dataNOW()UPDATE users SET last_login = NOW() WHERE id = 1;
Retrieve data from the past N daysNOW() - INTERVAL X DAYSELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;
Retrieve data within a specific time rangeCURTIME()SELECT * FROM logs WHERE TIME(created_at) BETWEEN '09:00:00' AND '18:00:00';
Convert UTC time to JSTCONVERT_TZ()SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');
Delete old data (older than 30 days)NOW() - INTERVAL X DAYDELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;

6.10 Résumé

  • NOW() gère la récupération de base de l’horodatage actuel
  • CURTIME() et CURRENT_TIME() sont utiles lorsque vous avez besoin uniquement de l’heure
  • Vous pouvez utiliser l’heure actuelle pour des requêtes à fenêtre temporelle, le filtrage par moment de la journée et des horodatages à précision milliseconde
  • Comme les horodatages dépendent des fuseaux horaires, utilisez CONVERT_TZ() pour obtenir l’heure correcte
  • Pour la gestion de la taille de la base de données, concevoir un mécanisme de suppression automatique des anciennes données est également important

📌 Conclusion : Utiliser l’heure actuelle efficacement vous aide à gérer les données plus efficacement dans MySQL.

7. FAQ (Foire aux questions)

Voici des questions fréquemment posées (FAQ) sur la façon d’obtenir l’heure actuelle dans MySQL.
Chaque question reçoit une réponse claire et concise.

7.1 Quelle est la différence entre NOW() et SYSDATE() ?

Réponse

NOW() et SYSDATE() récupèrent tous deux la date et l’heure actuelles, mais ils diffèrent quant au moment où la valeur est évaluée.

FunctionWhen it’s evaluatedNotes
NOW()At query startReturns a fixed timestamp for the statement
SYSDATE()At execution timeReturns a different timestamp on each evaluation

Exemple de test

SELECT NOW(), SLEEP(3), NOW();
SELECT SYSDATE(), SLEEP(3), SYSDATE();

Exemple de sortie

NOW()        | SLEEP(3) | NOW()
2025-02-14 16:30:45 | wait 3 seconds | 2025-02-14 16:30:45
SYSDATE()    | SLEEP(3) | SYSDATE()
2025-02-14 16:30:45 | wait 3 seconds | 2025-02-14 16:30:48

🚨 Pour le traitement des transactions, NOW() est généralement recommandé.

7.2 Les fonctions CURRENT_TIMESTAMP() et NOW() sont‑elles identiques ?

Réponse

Ils se comportent presque de la même façon, mais CURRENT_TIMESTAMP() peut être utilisé comme valeur DEFAULT.

Exemple lors de la création d’une table

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

7.3 Comment obtenir l’heure actuelle dans un fuseau horaire spécifique ?

Réponse

SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');

7.4 Comment enregistrer automatiquement l’heure actuelle ?

Réponse

Lors de la création d’une table, spécifiez DEFAULT CURRENT_TIMESTAMP pour enregistrer automatiquement l’heure actuelle dans created_at.

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    event VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

7.5 Comment récupérer les données des N derniers jours ?

Réponse

SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;

7.6 Comment obtenir l’heure actuelle avec une précision milliseconde (microseconde) ?

Réponse

SELECT NOW(3);

Exemple de sortie

2025-02-14 16:30:45.123

7.7 Résumé

  • NOW() et SYSDATE() diffèrent dans le moment de l’évaluation
  • CURRENT_TIMESTAMP() peut être utilisé comme valeur DEFAULT
  • Utilisez CONVERT_TZ() pour récupérer les horodatages dans d’autres fuseaux horaires
  • Utilisez DEFAULT CURRENT_TIMESTAMP pour enregistrer automatiquement les horodatages de création
  • Utilisez NOW() - INTERVAL X DAY pour récupérer les données des X derniers jours
  • NOW(3) ou NOW(6) prend en charge les horodatages avec précision milliseconde/microseconde

📌 Conclusion : choisir la bonne fonction temporelle MySQL est essentiel pour travailler avec les horodatages actuels.

8. Résumé

Dans cet article, nous avons expliqué comment obtenir l’heure actuelle dans MySQL.
En nous concentrant sur la fonction NOW(), nous avons abordé les différences entre fonctions similaires, des exemples de requêtes pratiques et des notes importantes.

8.1 Principales fonctions MySQL pour obtenir l’heure actuelle

FunctionWhat it returnsFormatNotes
NOW()Current date and timeYYYY-MM-DD HH:MM:SSMost common function
SYSDATE()Date and time at executionYYYY-MM-DD HH:MM:SSCan return different values on each evaluation
CURTIME()Current timeHH:MM:SSTime only (no date)
CURRENT_TIME()Current timeHH:MM:SSSame as CURTIME()
CURRENT_TIMESTAMP()Current date and timeYYYY-MM-DD HH:MM:SSAlmost the same as NOW()
UTC_TIMESTAMP()Current UTC date and timeYYYY-MM-DD HH:MM:SSTime zone fixed to UTC

📌 Conclusion :

  • Pour la récupération générale d’un horodatage actuel, NOW() est généralement le meilleur choix .
  • Si vous avez besoin de l’heure exacte d’exécution, utilisez SYSDATE() .
  • Si vous avez seulement besoin de l’heure (sans la date), choisissez CURTIME() .

8.2 Requêtes pratiques utilisant l’heure actuelle

Enregistrer l’heure actuelle lors de l’insertion de données

INSERT INTO users (name, created_at) VALUES ('Sato', NOW());

Enregistrer l’heure actuelle lors de la mise à jour de données

UPDATE users SET last_login = NOW() WHERE id = 1;

Récupérer les données des 7 derniers jours

SELECT * FROM orders WHERE order_date >= NOW() - INTERVAL 7 DAY;

Récupérer l’heure en tenant compte des fuseaux horaires

SELECT CONVERT_TZ(NOW(), 'UTC', 'Asia/Tokyo');

Supprimer les anciennes données (plus de 30 jours)

DELETE FROM logs WHERE created_at < NOW() - INTERVAL 30 DAY;

8.3 Notes sur les fuseaux horaires

  • NOW() de MySQL dépend du paramètre de fuseau horaire par défaut, donc les résultats peuvent varier selon les environnements.
  • Utilisez CONVERT_TZ() pour récupérer les horodatages dans un autre fuseau horaire.
  • Si vous souhaitez changer le fuseau horaire du serveur :
    SET GLOBAL time_zone = 'Asia/Tokyo';
    

8.4 FAQ sur les fonctions temporelles actuelles de MySQL

Q1. Quelle est la différence entre NOW() et SYSDATE() ?

NOW() récupère l’heure au début de la requête, tandis que SYSDATE() récupère l’heure à l’exécution.

Q2. CURRENT_TIMESTAMP() et NOW() sont‑ils identiques ?

➡ Ils sont presque identiques, mais CURRENT_TIMESTAMP() peut être utilisé comme valeur DEFAULT.

Q3. Comment obtenir l’heure actuelle avec une précision milliseconde (microseconde) ?

➡ Utilisez NOW(3) (millisecondes) ou NOW(6) (microsecondes).

SELECT NOW(3); -- Example: 2025-02-14 16:30:45.123

8.5 Résumé

  • En MySQL, choisir la bonne fonction pour l’heure actuelle est important .
  • Utilisez NOW() pour les cas typiques, et SYSDATE() lorsque vous avez besoin d’horodatages d’exécution exacts .
  • Utilisez CURTIME() pour l’heure uniquement, et CONVERT_TZ() pour la conversion de fuseau horaire .
  • Vous pouvez utiliser l’heure actuelle lors des insertions, mises à jour, recherches et suppressions .

📌 Conclusion : Maîtrisez les fonctions temporelles de MySQL pour gérer les données plus efficacement.