MySQL - Critères de sélection sur un champ date
Tagged:

mysql
MySQL n'a jamais été mon domaine de prédilection, j'ai découvert cette semaine la puissance des fonctions MySQL pour les sélections des dates.

Sur cette page j'ai trouvé quelques exemples qui m'ont ouvert les yeux sur ce que l'on peux faire côté MySQL.
Je cherchais à faire un SELECT sur un champ DATETIME pour retrouver les enregistrements avec une date supérieure à une semaine.
En adaptant un peu les exemples je suis arrivé à cette requête qui me retourne ce dont j'avais besoin, en temps normal j'aurais fais ça côté PHP mais je trouve cette solution plus simple et plus élégante.

SELECT * FROM Accounts_table
WHERE due_date < DATE_ADD(now(), Interval -1 week);

Jusqu'à présent je ne cherchais pas assez du côté MySQL, mais dorénavant je consulterai plus souvent le manuel de référence, surtout le chapitre des fonctions.

Autre exemple :

WHERE `Observation`.`created` BETWEEN '2008-04-01' AND DATE_ADD('2008-04-01', Interval 1 month)

MySQL à la rescousse ^^

Excellente astuce, je pense que beaucoup de développeurs ont tendance à faire les traitements d'informations dans le langage de l'applications (PHP, Java, VB, etc) et a négliger la puissance de MySQL. Pourtant MySQL possède de très bonne performance et peu souvent aider dans bien des domaines.

Clap clap

Alors là, j'applaudie des deux mains... très belle astuce, c'est vraiment élégant comme solution en effet!

PHP est aussi plein de ressources

Quelques exemples :

  • Derniere heure: strtotime("-1 hour")
  • Aujourd'hui minuit: strtotime("00:00 today")
  • Dernière semaine: strtotime("-1 week")
  • Derniere mois strtotime("-1 month")

Pour plus de détails :

  • http://www.gnu.org/software/tar/manual/html_node/tar_113.html
  • http://fr3.php.net/manual/en/function.strtotime.php