Supprimer une date antérieure à une autre [Résolu]

billou_13 874 Messages postés jeudi 4 mars 2004Date d'inscription 19 août 2014 Dernière intervention - 14 mars 2005 à 10:57 - Dernière réponse : Egalon 126 Messages postés lundi 26 avril 2004Date d'inscription 17 juin 2011 Dernière intervention
- 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
Afficher la suite 

5 réponses

Répondre au sujet
ffert 63 Messages postés samedi 18 janvier 2003Date d'inscription 15 décembre 2009 Dernière intervention - 19 mai 2005 à 15:28
+3
Utile
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
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de ffert
loyousse 198 Messages postés jeudi 3 février 2005Date d'inscription 16 décembre 2008 Dernière intervention - 14 mars 2005 à 15:58
+1
Utile
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...
Commenter la réponse de loyousse
billou_13 874 Messages postés jeudi 4 mars 2004Date d'inscription 19 août 2014 Dernière intervention - 14 mars 2005 à 17:52
0
Utile
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
Commenter la réponse de billou_13
billou_13 874 Messages postés jeudi 4 mars 2004Date d'inscription 19 août 2014 Dernière intervention - 20 mai 2005 à 09:12
0
Utile
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
---------------------
Commenter la réponse de billou_13
Egalon 126 Messages postés lundi 26 avril 2004Date d'inscription 17 juin 2011 Dernière intervention - 12 sept. 2006 à 16:08
0
Utile
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
Commenter la réponse de Egalon

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.