Algorithme php ou requete sql ? Probleme de date

[Résolu]
Signaler
Messages postés
35
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
15 avril 2014
-
Messages postés
48
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
9 mai 2011
-
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

Messages postés
354
Date d'inscription
dimanche 3 juin 2001
Statut
Membre
Dernière intervention
11 mars 2013

SELECT * FROM table WHERE start<'$date' AND end>'$date'

Pas testé mais je supose que ça doit marcher...
Messages postés
35
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
15 avril 2014

Super !
Merci beaucoup :)
Messages postés
591
Date d'inscription
mercredi 20 juillet 2005
Statut
Membre
Dernière intervention
16 juillet 2009
2
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á
Messages postés
48
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
9 mai 2011

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...