vespa Posté 10 Octobre 2009 Posté 10 Octobre 2009 Bonjour, Je voudrais faire une requete sur un champ datetime (contenant par exemple : 2009-10-10 18:42:33) mais je n'y arrive pas ... J'aimerai selectionner sur ce champ datetime les enregistrements du jour... Merci d'avance pour votre aide
angel-dust-web Posté 12 Octobre 2009 Posté 12 Octobre 2009 voilà : select * from MA_TABLE where to_char(MON_CHAMP_DATE, 'dd')='12'; -- Avec '12' à remplacer par la date du jour
Sarc Posté 12 Octobre 2009 Posté 12 Octobre 2009 Bonjour, Je pense que Vespa voulait parler d'équivalence de date, et non de "jour" uniquement... Je pense que ça devrait marcher comme ça : $rq = 'SELECT champ FROM table WHERE ladate LIKE "'.date('y-m-d').'%"'; Sinon, tu peux utiliser la fonction substr en SQL, mais ce doit être plus lourd : $rq = 'SELECT champ FROM table WHERE SUBSTR(ladate, 10) = "'.date('y-m-d').'"';
angel-dust-web Posté 13 Octobre 2009 Posté 13 Octobre 2009 (modifié) Bonjour, Je pense que Vespa voulait parler d'équivalence de date, et non de "jour" uniquement... Je pense que ça devrait marcher comme ça : $rq = 'SELECT champ FROM table WHERE ladate LIKE "'.date('y-m-d').'%"'; Sinon, tu peux utiliser la fonction substr en SQL, mais ce doit être plus lourd : $rq = 'SELECT champ FROM table WHERE SUBSTR(ladate, 10) = "'.date('y-m-d').'"'; dans ce cas, select * from MA_TABLE where to_char(MON_CHAMP_DATE, 'dd-mm-yyyy')='13-10-2009'; en régle générale, je préfère convertir une date en chaine qu'une chaine en date. Ce n'est pas pasqu'on voit affiché "2009-10-10 18:42:33" sur son phpMyAdmin ou autre qu'on doit estimer qu'en SQL, la vue sera la même (les préférences d'affichage peuvent formater la date différemment, genre format fr, etc...). Il me parait plus prudent de demander a SQL de s'occuper de la conversion au format demandé, plutôt que d'essayer de gérer soit même. Sans compter qu'un débutant pourrait comprendre qu'une date et une chaine sont la même chose, et une fois arrivé dans un langage fortement typé, chercher pendant des heures pourquoi son test ne marche pas... // exemple en java : Date date = new Date(); if (date.equals("13/12/2009")) { // Syntaxe ok, mais ne fonctionnera jamais .... Attention, je ne veux pas dire qu'en java, on doit convertir les dates en chaines pour les comparer, hein ? Modifié 13 Octobre 2009 par angel-dust-web
Kioob Posté 14 Octobre 2009 Posté 14 Octobre 2009 Bonjour, plutôt que de forcer des conversions en chaine, je travaillerais directement sur la date : select * from tatable where date(ladate) = curdate()
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant