🧚 Écoute ! Beekeeper Studio est une interface de base de données rapide, moderne et open source Télécharger
2 juillet 2025 Par Matthew Rathbone

Pour insérer une date en SQL, écris-la dans ton instruction INSERT sous forme de chaîne 'YYYY-MM-DD', ou utilise une fonction comme CURRENT_DATE pour la date du jour. Les exemples fonctionnent avec PostgreSQL, MySQL, SQLite et SQL Server.

Comment insérer une date en SQL

Écris la date sous forme de chaîne au format 'YYYY-MM-DD'. Si la colonne est de type date, la base de données convertit la chaîne en date :

INSERT INTO table_name (date_column) VALUES ('YYYY-MM-DD');
INSERT INTO orders (order_id, customer, order_date)
VALUES (2, 'Tom', '2021-06-15');

Pour une colonne TIMESTAMP ou DATETIME, ajoute l’heure après un espace, au format 24 heures :

INSERT INTO flights (flight_no, departs_at)
VALUES ('UA 940', '2026-11-02 17:45:00');
-- In SQL Server, make departs_at a DATETIME2: its TIMESTAMP type isn't a date

Pour la date du jour, mets CURRENT_DATE à la place de la chaîne, sans guillemets. CURRENT_TIMESTAMP donne la date et l’heure :

INSERT INTO orders (order_id, customer, order_date)
VALUES (3, 'Priya', CURRENT_DATE);
-- In SQL Server, use CAST(GETDATE() AS DATE): it has no CURRENT_DATE

-- Output (the new row, run on 2026-10-13):
-- order_id | customer | order_date
-- ---------+----------+-----------
-- 3        | Priya    | 2026-10-13

Règles à connaître

  • Tiens-t’en à 'YYYY-MM-DD'. Les autres formats dépendent des paramètres de la base de données. PostgreSQL et SQL Server lisent '06/15/2021' comme mois/jour/année, et MySQL le rejette :
INSERT INTO orders (order_id, customer, order_date) VALUES (4, 'Ana', '06/15/2021');
-- MySQL: ERROR 1292 (22007): Incorrect date value: '06/15/2021' for column 'order_date' at row 1
  • SQLite ne vérifie pas les dates. Il n’a pas de type date et stocke n’importe quel texte que tu lui donnes. Ses fonctions de date ne savent pas lire '06/15/2021', et elles reportent '2021-02-30' au 2021-03-02.
  • Le TIMESTAMP de MySQL ne couvre que 1970 à 2038. Utilise DATETIME pour les anniversaires, les dates historiques et tout ce qui est loin dans le futur :
-- MySQL
CREATE TABLE people (name VARCHAR(50), born_at TIMESTAMP);
INSERT INTO people (name, born_at) VALUES ('Ada Lovelace', '1815-12-10 00:00:00');
-- ERROR 1292 (22007): Incorrect datetime value: '1815-12-10 00:00:00' for column 'born_at' at row 1
  • « Maintenant » est dans le fuseau horaire de la base de données (toujours UTC dans SQLite). Si tes utilisateurs sont répartis sur plusieurs fuseaux horaires, stocke en UTC.

Syntaxe alternative

Tu croiseras aussi les noms propres à chaque base de données pour aujourd’hui et maintenant :

  • MySQL : CURDATE() et NOW(). PostgreSQL a aussi NOW().
  • SQLite : date('now') et datetime('now').
  • SQL Server : CAST(GETDATE() AS DATE) et GETDATE(). Il n’a pas de CURRENT_DATE, donc la date du jour nécessite le cast.

Quand dois-tu insérer une date ?

La plupart des insertions de dates correspondent à l’un de ces cinq cas, et chacun a son propre outil.

Enregistrer une date que tu connais déjà

Les anniversaires, échéances et rendez-vous viennent d’une personne ou d’un formulaire. Saisis-les sous forme de chaînes 'YYYY-MM-DD'.

Horodater avec la date du jour ou l’heure actuelle

Les dates de commande, d’inscription et les journaux d’audit doivent venir de l’horloge de la base de données, pas d’une valeur saisie par quelqu’un. Utilise CURRENT_DATE ou CURRENT_TIMESTAMP (GETDATE() dans SQL Server), ou fais-en la valeur par défaut de la colonne.

Stocker une heure en plus d’une date

Les réunions, vols et entrées de journal ont aussi besoin de l’heure. Utilise une colonne DATETIME ou TIMESTAMP et écris 'YYYY-MM-DD HH:MM:SS'.

Calculer une date à partir d’une autre

Les échéances, renouvellements et rappels tombent un certain temps après une autre date. Laisse la base de données faire le calcul : + INTERVAL dans PostgreSQL et MySQL, DATEADD() dans SQL Server et date() avec un modificateur dans SQLite.

Charger des dates écrites dans un autre format

Les tableurs et exports CSV contiennent souvent des dates comme 06/15/2021. Convertis-les à l’insertion : STR_TO_DATE() dans MySQL, TO_DATE() dans PostgreSQL et CONVERT() avec un numéro de style dans SQL Server. SQLite ne sait pas analyser d’autres formats, alors réorganise le texte avec substr().

Exemples concrets d’insertion de dates

Ajouter plusieurs dates en une seule instruction

Une liste de jours fériés s’insère avec un seul INSERT et une ligne de valeurs par date :

INSERT INTO holidays (holiday_name, holiday_date)
VALUES
  ('Independence Day', '2026-07-04'),
  ('Thanksgiving', '2026-11-26'),
  ('Christmas Day', '2026-12-25');

Remplir la date du jour avec une valeur par défaut

Donne une valeur par défaut à la colonne et chaque INSERT qui l’omet reçoit la date du jour. MySQL exige les parenthèses autour de CURRENT_DATE :

CREATE TABLE orders (
  order_id INT,
  customer_id INT,
  order_date DATE DEFAULT (CURRENT_DATE)  -- SQL Server: DEFAULT CAST(GETDATE() AS DATE)
);

INSERT INTO orders (order_id, customer_id) VALUES (1, 42);

-- Output (the new row, run on 2026-10-13):
-- order_id | customer_id | order_date
-- ---------+-------------+-----------
-- 1        | 42          | 2026-10-13

Enregistrer l’heure locale d’une réunion en UTC

Quelqu’un à New York réserve une réunion à 9 h 30, heure locale. Convertis-la en UTC à l’insertion pour que les heures de tout le monde concordent :

INSERT INTO meetings (title, starts_at_utc)
VALUES ('Design review', TIMESTAMP '2026-10-20 09:30:00' AT TIME ZONE 'America/New_York' AT TIME ZONE 'UTC');
-- MySQL (once its time zone tables are loaded):
--   CONVERT_TZ('2026-10-20 09:30:00', 'America/New_York', 'UTC')
-- SQL Server:
--   CAST('2026-10-20 09:30:00' AS DATETIME2) AT TIME ZONE 'Eastern Standard Time' AT TIME ZONE 'UTC'

-- Output (the new row):
-- title         | starts_at_utc
-- --------------+--------------------
-- Design review | 2026-10-20 13:30:00

SQLite n’a pas de fuseaux horaires nommés, donc fais la conversion dans ton application avant l’insertion.

Fixer une date de renouvellement un mois plus tard

Un abonnement se renouvelle un mois après son début. Calcule la date de renouvellement dans l’INSERT :

INSERT INTO subscriptions (customer, started_on, renews_on)
VALUES ('Tom', '2026-10-13', DATE '2026-10-13' + INTERVAL '1' MONTH);
-- SQL Server: DATEADD(month, 1, '2026-10-13')
-- SQLite:     date('2026-10-13', '+1 month')

-- Output (the new row):
-- customer | started_on | renews_on
-- ---------+------------+-----------
-- Tom      | 2026-10-13 | 2026-11-13

Attention à la fin du mois dans SQLite. À partir du 31 janvier, il déborde sur mars, là où les autres bases de données s’arrêtent au 28 février :

SELECT date('2026-01-31', '+1 month');
-- Output: 2026-03-03

Importer des dates jour/mois/année

Un fournisseur envoie des factures datées à la britannique, 15/06/2021. Indique le format à la base de données lors de l’insertion :

INSERT INTO invoices (invoice_no, issued_on)
VALUES ('INV-1002', TO_DATE('15/06/2021', 'DD/MM/YYYY'));
-- MySQL:      STR_TO_DATE('15/06/2021', '%d/%m/%Y')
-- SQL Server: CONVERT(date, '15/06/2021', 103), where style 103 is dd/mm/yyyy
-- SQLite can't parse dates: rearrange the text with substr()

-- Output (the new row):
-- invoice_no | issued_on
-- -----------+-----------
-- INV-1002   | 2021-06-15

Pour aller plus loin sur l’insertion de dates

Sur ce blog :

Documentation officielle :

Beekeeper Studio est une interface de base de données gratuite & open source

Le meilleur outil de requêtes & éditeur SQL que j’aie jamais utilisé. Il m’offre tout ce dont j’ai besoin pour gérer ma base de données. - ⭐⭐⭐⭐⭐ Mit

Beekeeper Studio est rapide, intuitif et facile à utiliser. Beekeeper prend en charge plein de bases de données et fonctionne parfaitement sous Windows, Mac et Linux.

La version Linux de Beekeeper est 100% complète : rien de bâclé, aucun compromis sur les fonctionnalités.

Ce que les utilisateurs disent de Beekeeper Studio

★★★★★
« Beekeeper Studio a complètement remplacé mon ancien workflow SQL. C’est rapide, intuitif, et ça rend le travail sur les bases de données à nouveau agréable. »
— Alex K., développeur de bases de données
★★★★★
« J’ai essayé beaucoup d’interfaces de bases de données, mais Beekeeper trouve le parfait équilibre entre fonctionnalités et simplicité. Ça marche, tout simplement. »
— Sarah M., ingénieure full stack