Commandes SQL
Ce document me sert de rappel concernant les commandes SQL.
Supprimer tout le champ à partir d’une chaine si elle existe :
# On met à jour le champ en tronquant à partir de la chaine
UPDATE maBase.maTable as data
SET data.monChamp = SUBSTRING_INDEX(data.monChamp, "chaine", 1)
WHERE data.id IN
(
Select *
FROM
( Select data2.id
FROM maTable as data2
WHERE data2.monChamp like "%chaine%"
)
tmp
)
;
Calculer un âge avec une date de naissance :
CREATE FUNCTION `AGE` (`naissance` DATE) RETURNS INT(11) BEGIN
DECLARE age INT;
# On fait attention aux années bissextile
IF (DAY(current_date) >= DAY(naissance) AND MONTH(current_date) >= MONTH(naissance)) OR (MONTH(current_date) > MONTH(naissance))
THEN
set age = YEAR(current_date) - YEAR(naissance);
ELSE
set age = YEAR(current_date) - YEAR(naissance) - 1;
END IF;
RETURN (age);
END
Calculer les jours restant jusqu’à une date :
CREATE FUNCTION `jrest` (`naissance` DATE) RETURNS INT(11) BEGIN
IF (DATEDIFF(CONCAT(YEAR(NOW()), '-', LPAD( MONTH(naissance), 2, '0'), '-', LPAD( DAY(naissance), 2, '0')), NOW())) > 0 THEN
RETURN DATEDIFF(CONCAT(YEAR(NOW()), '-', LPAD( MONTH(naissance), 2, '0'), '-', LPAD( DAY(naissance), 2, '0')), NOW());
END IF;
RETURN DATEDIFF(CONCAT(YEAR(NOW() + INTERVAL 1 YEAR), '-', LPAD( MONTH(naissance), 2, '0'), '-', LPAD( DAY(naissance), 2, '0')), NOW());
END