Algorithme php ou requete sql ? Probleme de date

Résolu
evenkil Messages postés 35 Date d'inscription lundi 13 février 2006 Statut Membre Dernière intervention 15 avril 2014 - 21 juil. 2007 à 21:42
rethenor Messages postés 48 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 9 mai 2011 - 25 juil. 2007 à 17:45
Bonjour,

J'aimerai pouvoir déterminer dans quelle tranche de période se situe une date donnée.

Je voulai savoir si il est possible de concevoir une requete sql pour interrogger directement la base de donnée ou bien est ce qu'il faut concevoir un algo en php ?

Voici ma table SQL :
CREATE TABLE `heber_chambres_prix` (
  `id` int(15) NOT NULL,
  `id_chambre` varchar(10) collate latin1_german2_ci NOT NULL,
  `start` date NOT NULL,
  `end` date NOT NULL,
  `prix` varchar(10) collate latin1_german2_ci NOT NULL,
  PRIMARY KEY  (`id`)
) ;

Qu'en pensez vous ?

Merci beaucoup

4 réponses

JulSoft Messages postés 354 Date d'inscription dimanche 3 juin 2001 Statut Membre Dernière intervention 11 mars 2013
21 juil. 2007 à 21:47
SELECT * FROM table WHERE start<'$date' AND end>'$date'

Pas testé mais je supose que ça doit marcher...
3
evenkil Messages postés 35 Date d'inscription lundi 13 février 2006 Statut Membre Dernière intervention 15 avril 2014
21 juil. 2007 à 21:52
Super !
Merci beaucoup :)
0
vilhjalms Messages postés 591 Date d'inscription mercredi 20 juillet 2005 Statut Membre Dernière intervention 16 juillet 2009 2
22 juil. 2007 à 09:33
Saell og blesuð

Ou alors il y a between cf : http://dev.mysql.com/doc/refman/5.0/fr/comparison-operators.html

example :


mysql>
SELECT 1 BETWEEN 2 AND 3;

-> 0
mysql>
SELECT 'b' BETWEEN 'a' AND 'c';

-> 1
mysql>
SELECT 2 BETWEEN 2 AND '3';

-> 1
mysql>
SELECT 2 BETWEEN 2 AND 'x-3';

-> 0


Vilhjálms
Sigurðsdóttir aka Frëyjá
0
rethenor Messages postés 48 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 9 mai 2011
25 juil. 2007 à 17:45
La réponse de JulSoft est tout justifiée :
SELECT * FROM table WHERE start<'$date' AND end>'$date'


mais c'est à evenkil de mettre les bonnes valeurs dans la variable $date ou alors à faire en sorte que l'une des bornes (start ou end) puisse englober la date donnée:
...WHERE start<='$date' AND end>'$date'
ou
...WHERE start<'$date' AND end>='$date'
Si l'on s'en tient à la stricte infériorité ou supériorité, il se peut qu'une date ne soit pas prise en compte DANS la fourchette de dates si celle-ci est égale à l'une des bornes.


A moins qu'on veuille absolument que les deux bornes puissent l'englober :
...WHERE start<='$date' AND end>='$date'


mais dans ce cas, c'est à evenkil de savoir ce qu'il veut tester...
0
Rejoignez-nous