billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 2014
-
14 mars 2005 à 10:57
Egalon
Messages postés124Date d'inscriptionlundi 26 avril 2004StatutMembreDernière intervention17 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 ?
ffert
Messages postés63Date d'inscriptionsamedi 18 janvier 2003StatutMembreDernière intervention15 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 !!!!
loyousse
Messages postés198Date d'inscriptionjeudi 3 février 2005StatutMembreDernière intervention16 décembre 20081 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...
billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 201429 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.
billou_13
Messages postés860Date d'inscriptionjeudi 4 mars 2004StatutMembreDernière intervention19 août 201429 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
---------------------
Vous n’avez pas trouvé la réponse que vous recherchez ?
Egalon
Messages postés124Date d'inscriptionlundi 26 avril 2004StatutMembreDernière intervention17 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 .