Supprimer une date antérieure à une autre

Résolu
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 - 14 mars 2005 à 10:57
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011 - 12 sept. 2006 à 16:08
Bonjour,



Alors, voila je dois faire une requête SQL permettant de supprimer
toutes les informations d'une table où les dates seraient antérieures à
6 mois.



N'ayant pas de solution au premier abord, je me suis posé quelques questions :



- Ma date dans la table est au format Varchar (sous la forme
dd/mm/yyyy) . Je me demande si pour de tels calculs, je devrai pas
plutot mettre un format date dans la table.



- Ensuite, j'ai trouvée une solution mais je s'est pas si ça risque pas
de planter. Ayant ma date au format Varchar comme ci-dessus, je calcule
la date équivalente à 6 mois auparavent. Exemple, le 01/01/2005 et je
lance donc ma requete



DELETE FROM Informations WHERE Date<'01/01/2005' et ca marche !



Cool, mais je me demande si le fait de prendre une chaine inférieure à
une autre (vu que la date est au format Varchar) est un si bon calcul
que ca ? Ca ne risque pas de planter ?


Billou_13
Bask En Force

5 réponses

ffert Messages postés 63 Date d'inscription samedi 18 janvier 2003 Statut Membre Dernière intervention 15 décembre 2009
19 mai 2005 à 15:28
je suis d'accord avec [auteurdetail.aspx?ID=439964 loyousse].... un format de date aurait été mieux... sinon peux-tu changer le formatage (chaine) de stockage de la date ???



car si tu peux... et bien en écrivant yyyy-mm-jj (ou yyyymmjj), alors tu pourras directement faire




DELETE FROM Informations WHERE Date < '2005-01-01'



et ce sera bien les bonnes dates qui seront effacée... .......Mais attention.. si ce champs contient des valeurs vides, elle seront également supprimées !!!!



j'espère que ça te conviens ...




Fabien FERT
www.sigmadia.fr.fm
3
loyousse Messages postés 198 Date d'inscription jeudi 3 février 2005 Statut Membre Dernière intervention 16 décembre 2008 1
14 mars 2005 à 15:58
Moi j'ai fais la meme pour une date antérieur à 10jours et je l'ai fais
en php. Mes champ de dates sont de format date donc quand je met Date<'01/01/2005' ça risque pas de planter pour ton cas je ne sais pas...
1
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
14 mars 2005 à 17:52
En fait, mon problème est que je voudrais rester en varchar pour la
date car le format date est différent suivant les SGBD alors que
Varchar restera Varchar ...



Alors, dans ce cas, je pensez ajouter dans la requête une fonction
existante sous Oracle qui est TODATE() permettant de retourner une date
a partir d'un Varchar. Seulement, je ne connais pas l'equivalent sous
SqlServer.



Si vous pouvez m'aider...



Bonne soirée


Billou_13
Bask En Force
0
billou_13 Messages postés 860 Date d'inscription jeudi 4 mars 2004 Statut Membre Dernière intervention 19 août 2014 29
20 mai 2005 à 09:12
Ca me va parfaitement, je v mettre ça en pratique.

Merci à vous deux en bonne journée

Billou_13
Bask En Force

--------------------------------------------------------------------
Connaître la réponse est une chose, savoir pourquoi en est une autre
---------------------
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Egalon Messages postés 124 Date d'inscription lundi 26 avril 2004 Statut Membre Dernière intervention 17 juin 2011
12 sept. 2006 à 16:08
Bonjour, j'avais le même problème avec MySQL, j'ai trouvé une solution sur :
http://dev.mysql.com/doc/refman/5.0/fr/date-and-time-functions.html
(spécifique à My SQL mais ca peut intéresser des gens)
qui propose:
SELECT quelquechose FROM nom_de_table
           WHERE TO_DAYS(NOW()) - TO_DAYS(date_col) <= 30;
pour 30 jours, ca marche aussi pour les delete.
Voili voilou .

Signé: Egalon qui comprend difficilement
0
Rejoignez-nous