Aller au contenu

Select sur un Datetime


Sujets conseillés

Posté

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

Posté

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').'"';

Posté (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é par angel-dust-web
Posté

Bonjour,

plutôt que de forcer des conversions en chaine, je travaillerais directement sur la date :

select * from tatable where date(ladate) = curdate()

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...