Page 1 sur 1
Requete pour une date supérieure a 30 jours a la date du jour
Posté : 30 janv. 2019, 11:29
par bastoucool
Bonjour,
J'ai besoin de faire une requête pour supprimer un lien entre deux tables, pour une date supérieure a 30 jours.
Je voudrais faire tourner cette requête tous les soirs en automatique
Je pensais dans un premier temps utiliser la fonction suivante une fois par mois :
"((({# FILTER_DATE ('AM_EMPLOYEE.END_OF_CONTRACT', ' BEFOREMONTHS', '1') #})) AND (AM_EMPLOYEE.END_OF_CONTRACT is not null))"
Mais finalement, je voudrais qu'elle tourne tous les soirs, et je pensais donc utiliser la requete :
DELETE FROM AM_EMPLGROUP WHERE EMPLOYEE_ID IN
(SELECT EMPLOYEE_ID FROM AM_EMPLOYEE WHERE END_OF_CONTRACT < now()-30)
Mais cela ne marche pas
Re: Requete pour une date supérieure a 30 jours a la date du jour
Posté : 30 janv. 2019, 11:30
par bastoucool
A la place du now, j'ai aussi utilisé today, mais idem
Re: Requete pour une date supérieure a 30 jours a la date du jour
Posté : 30 janv. 2019, 11:54
par @rthur
La question que tu dois te poser c'est comment soustraire 30 jours à la date actuelle.
Vu le format renvoyé par la fonction NOW() :
https://sql.sh/fonctions/now
Je doute fortement que "NOW()-30" donne ce que tu veux.
Et tu peux le vérifier assez simplement en affichant le résultat avec cette requête :
SELECT NOW()-30;
Voici la liste des fonctions MySQL qui permettent de manipuler les dates :
https://dev.mysql.com/doc/refman/5.5/en ... tions.html
Je te laisse chercher un peu laquelle serait la plus pertinente pour ton besoin
Un indice : soustraire en anglais se dit subtract
Re: Requete pour une date supérieure a 30 jours a la date du jour
Posté : 30 janv. 2019, 12:16
par bastoucool
DateDiff()

Re: Requete pour une date supérieure a 30 jours a la date du jour
Posté : 30 janv. 2019, 12:25
par @rthur
DateDiff()
Perdu !
DATEDIFF() c'est pour soustraire 2 dates et obtenir le nombre de jours.
C'en est un autre pas très loin dans la liste

Re: Requete pour une date supérieure a 30 jours a la date du jour
Posté : 30 janv. 2019, 13:02
par bastoucool
Je dirais Datesub ...
Re: Requete pour une date supérieure a 30 jours a la date du jour
Posté : 30 janv. 2019, 13:11
par bastoucool
SELECT DATE_SUB("2019-01-30", INTERVAL -1 MONTH);
Mais puis je remplacer le 2019-01-30 par current_date() ?
Re: Requete pour une date supérieure a 30 jours a la date du jour
Posté : 30 janv. 2019, 13:17
par @rthur
Gagné !
Et oui tu peux remplacer la date par une autre fonction MySQL qui va te donner la date du jour comme CURRENT_DATE()
Par contre DATE_SUB fait déjà une soustraction donc instinctivement j'aurai donné un intervalle d'1 mois et non pas de "-1" mois...
Re: Requete pour une date supérieure a 30 jours a la date du jour
Posté : 30 janv. 2019, 13:20
par bastoucool
Merci pour votre aide, je vais tenter ça.
Merci Arthur pour ta célérité
Et effectivement, ce sera bien 1, et non -1
Re: Requete pour une date supérieure a 30 jours a la date du jour
Posté : 31 janv. 2019, 12:06
par bastoucool
Bon, ben cela ne fonctionne pas, pourtant je pense avoir fait ce qui était dit .
Ma requete : UPDATE AM_EMPLOYEE SET PROFIL_ID = NULL
WHERE EMPLOYEE_ID IN
(SELECT EMPLOYEE_ID FROM AM_EMPLOYEE WHERE date_SUB((curdate), INTERVAL 30 day)
Re: Requete pour une date supérieure a 30 jours a la date du jour
Posté : 31 janv. 2019, 22:34
par @rthur
Relis bien ton SELECT (et vérifie le dans phpmyadmin)
