CURDATE
CURDATE()
Renvoie la date actuelle (type DATE) au format YYYY-MM-DD selon le fuseau horaire de la session. CURRENT_DATE et CURRENT_DATE() fonctionnent de la même façon.
Exemples
Les exemples avec les tables customers, products et orders utilisent la base de données d’exemple de la série Bases du SQL.
SELECT CURDATE() = CURRENT_DATE AS same, CURDATE() - INTERVAL 1 DAY < CURDATE() AS yesterday, CHAR_LENGTH(CURDATE()) AS len;
+------+-----------+-----+ | same | yesterday | len | +------+-----------+-----+ | 1 | 1 | 10 | +------+-----------+-----+
Les commandes de la base d’exemple par rapport à un « aujourd’hui » fixe – le nombre de jours depuis la commande :
SET @today = '2026-03-20'; SELECT id, order_date, DATEDIFF(@today, order_date) AS days_since_order FROM orders WHERE order_date >= @today - INTERVAL 30 DAY ORDER BY order_date;
+----+------------+------------------+ | id | order_date | days_since_order | +----+------------+------------------+ | 5 | 2026-02-20 | 28 | | 6 | 2026-03-01 | 19 | | 7 | 2026-03-15 | 5 | +----+------------+------------------+
Points d’attention
- Lors d’une comparaison d’une colonne DATETIME avec CURDATE(), la valeur de CURDATE() vaut minuit : created = CURDATE() ne trouve que les lignes à exactement 00:00:00. Pour « aujourd’hui », utilisez created >= CURDATE() AND created < CURDATE() + INTERVAL 1 DAY.
- La date dépend du fuseau horaire de la session – autour de minuit, elle peut différer de la date en PHP.