begin process at 2012 05 28 09:42:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

ASP / ASP3

 > 

Base de données

 > 

MySQL

 > 

Requete sql date/durée


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Requete sql date/durée

samedi 19 novembre 2011 à 02:22:42 | Requete sql date/durée

555clR

Bonjour !
voilà quelques jours que je réfléchis à une manière de questionner une base de données.
Dans une table d'évènements, on trouve un champ date, un champ durée(qui peut s'étendre sur plusieurs jours).
l'idée serait d'afficher les événements d'un jour particulier, sachant que la fin de certains évènements est après le début de la journée et d'autres se terminent après la fin.
Je ne vois pas comment tourner la requête.
j'avais d'abord fait comme ça :
'SELECT *
FROM events
WHERE (
(MONTH(date_debut_event)='.$numero_mois.'
OR MONTH(date_fin_event)='.$numero_mois.')
AND (YEAR(date_debut_event) = '.$annee.'
OR YEAR(date_fin_event) = '.$annee.'))
&& '.$jour_lu.' BETWEEN UNIX_TIMESTAMP(date_debut_event) AND UNIX_TIMESTAMP(date_fin_event)
ORDER BY date_debut_event';

Et puis j'ai finalement fait ça :
'SELECT *
FROM
evenements E,
evnmt_type T
WHERE
day(E.event_date_debut) = '.$this->_timstp_jr['jr'].'
&& month(E.event_date_debut) = '.$this->_timstp_jr['mois'].'
&& year(E.event_date_debut) = '.$this->_timstp_jr['an'].'
&& E.event_type = T.evnmt_type_id
ORDER BY hour(E.event_date_debut)';

mais ça ne filtre pas les résultats comme il faudrait (la sélection ne se fait qu'à partir du champ date de début d'evenement).
auriez-vous une idée? Merci d'avance de votre aide
samedi 19 novembre 2011 à 17:17:01 | Re : Requete sql date/durée

cgandco


Bonjour,

J'ai deux petites précisions qu'il nous manque :

1) Je suppose que ton champ Durée est un entier, mais il est en quelle unité : seconde, minute, ...

2) si la date cherchée est le 19/11/2011 à 16h20 et que ton événement se termine le 19/11/2011 à 15h00

ou

la date cherchée est le 19/11/2011 à 6h00 et que ton événement débute le 19/11/2011 à 8h00

L'événement doit'il être listé ?

Bonne journée


Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
samedi 19 novembre 2011 à 18:00:05 | Re : Requete sql date/durée

555clR

Bonjour cgandco,
pour répondre à tes questions :
1/ mon champ mysql pour la date de début est de type datetime, et mon champs pour la durée est de type varchar... et puis après récupération je transforme.
Je devrais sans doute mettre le 1er en type timestamp, et le second en secondes/mn... ce serait plus logique en effet.
2/ je me suis sans doute mal exprimée.
L'idée est d'afficher un jour, et visualiser tous les évènements qui sont dans cette journée.
par exemple :
je veux voir ce qu'il se passe le 12juillet...
Je verrais de ma base de données tous les évènements qui se déroulent le 12 (qui commencent et terminent), mais aussi tous les événements qui ont débuté avant le 12 et qui se terminent après... c'est bien là mon pb. comment calculer ça?

Merci en tous les cas de ta réponse et de ton intérêt. Bonne fin de journée

j'espère que c'est plus clair...
samedi 19 novembre 2011 à 19:13:46 | Re : Requete sql date/durée

cgandco

Réponse acceptée !

Bonjour,

Je n'ai jamais travaillé avec mysql mais avec sql server.

en principe cela doit être équivalent.

Pour moi Datetime pour la date c'est bien.

dans l'expression suivante (1) le resultat est la date de début le matin à minuit.


convert(datetime,convert(varchar(2),datepart(day,date_debut)) + '/' + convert(varchar(2),datepart(month,date_debut)) + '/' + convert(varchar(4),datepart(year,date_debut)))

dans l'expression suivante (2) le résultat est la date de la fin de l'événement le matin à minuit.

convert(datetime,convert(varchar(2),datepart(day,dateadd(minute,durée,date_debut))) + '/' + convert(varchar(2),datepart(month,dateadd(minute,durée,date_debut))) + '/' + convert(varchar(4),datepart(year,dateadd(minute,durée,date_debut))))

dans l'expression suivante (3) le résultat est la date de la fin de l'événement le soir à minuit.

Tu dois donc filtrer ta table pour que
expression(1) <= jour_analysé and jour_analysé <= expression(3)

J'espère que la conversion vers mysql est simple.


Rq : suivant la configuration de mysql tu devras peut être inverser la conversion de date jour/mois/année ou année/mois/jour

Bonne soirée


Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
samedi 19 novembre 2011 à 19:30:28 | Re : Requete sql date/durée

cgandco

Réponse acceptée !
Encore moi,

plus simple pour retirer les heures et les minutes :

convert(datetime,convert(varchar,date_debut,104),104)

A+


Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
samedi 19 novembre 2011 à 20:02:27 | Re : Requete sql date/durée

555clR

oui, c'est exactement ça. Je vais tourner un peu autour ce soir mais je crois que c'est exactement ce que je cherche à faire.
je ne parvenais pas à trouver un moyen d'y arriver.
Je te remercie beaucoup.
Je reviendrais par là lorsque j'aurais qqchose d'opérationnel.
merci encore et bonne soirée également.
PS : et sinon oui pour mysql, annee/mois/jour tjs.
samedi 19 novembre 2011 à 20:37:33 | Re : Requete sql date/durée

cgandco

Réponse acceptée !
encore un ooooppppsss

je ne t'ai pas donné l'expression 3 (le résultat est la date de la fin de l'événement le soir à minuit.)

c'est dateadd(day,1,expression2)

et le dernier petit bug (j'espère)

pas expression(1) <= jour_analysé and jour_analysé <= expression(3)

mais expression(1) <= jour_analysé and jour_analysé < expression(3)

car tu ne donneras pas la date à chercher avec des heures:minutes donc tu aurais avec le = les événements de la veille aussi.

bonne soirée








Faites simple, aussi simple que possible, mais pas simpliste.
A. Einstein.
lundi 21 novembre 2011 à 05:50:00 | Re : Requete sql date/durée

555clR

J'ai mit le temps mais j'ai finit par faire :
en php pour récupérer le jour qui m'intéresse :
//affichage du jour (à 00:00:00)
if(!isset($_GET['d']) && !isset($_GET['m']) && !isset($_GET['y']))
{
// Si rien dans l'url, récupération de la date du jour
$timestamp_jour = @mktime(0, 0, 0, date('m'), date('d'), date('Y'));
}
else
{
//sinon récupération de la date envoyée ds url
$timestamp_jour = @mktime(0, 0, 0, $_GET['m'], $_GET['d'], $_GET['y']);
}

$timestamp_transfo_date = date('Y',$timestamp_jour).'-'.date('m',$timestamp_jour).'-'.date('d',$timestamp_jour);

et ma requête :
(la durée de l'évenement est enregistrée en time dans ma base de données)

SELECT *
FROM evenements E, evnmt_type T
WHERE
(date(E.event_date_debut) <= date("'.$timestamp_transfo_date.'"))
&& (date("'.$timestamp_transfo_date.'") < date(DATE_ADD(DATE_ADD(E.event_date_debut,INTERVAL E.event_duree HOUR_SECOND), INTERVAL 1 DAY)))
&& E.event_type = T.evnmt_type_id
ORDER BY day(hour(E.event_date_debut))

tout marche impec.
je suis aux anges
Je te remercie encore de ton aide précieuse cgandco: manquant cruellement de logique, je n'aurais jamais trouvé seule.


Cette discussion est classée dans : fin, date, debut, event, jr


Répondre à ce message

Sujets en rapport avec ce message

Problème de requêtes avec date [ par suzy26 ] Bonjour à toi,J'ai crée un bdd sur les manifestations. J'ai plusieurs champ dont debut et fin qui correspondent à la date de début et de fin de l'évèn CompareValidator de deux dates [ par mael974 ] brj tt le monde .... tit souci ek le comparevalidator .... je cherche a comparer 2 dates(date fin >date debut) choz super classique !!! voila seulemen trouver les date de debut et de fin a partir d'un numero de semaine [ par kulinicm ] salut,j'ai un probleme je n'arrive pas a trouver les date de debut et de fin d'un semaine a partir du numero de cette semaine ainsi que de l'annee.qq' verifier date reele [ par artagnan ] SAlut mais est ce possible de récupérer l heure genre GMT , l heure internet en asp je fait un site achat de coupon en ligne et les coupons sont aff pb pour faire un prog [ par taillecrayon ] Bonsoir,j'essaye de faire un prog :on tape un texte avec e-mail(dans le textbox :textann) le prog rend le texte avec l'e-mail en lien(si on clique de convertion dim vers entier [ par anubis52100 ] bonjour,voila je souhaite convertire ma chaine en entier pour l'utilisé dans mon if!mercicode ASP  'jour debut  dim jourdeb  jourdeb=debut  jourdeb=mi comparer des heures [ par ludwigfve ] Bonjour, a tousPouvez vous m'aider svpje cherche a comparer des heures a savoir lors d'un post d'un formulaire avec heure de debut et de fin , je veux JOURS OUVRES [ par ZAINANE ] SALUT J'ai besoin d'une requete SQL SERVER à partir de VB6 qui retourne le nombre de jours ouvrés ou jours fin de semaine entre deux dates. la table S Access [ par zbe ] allixBonjour, voila ma requet sur une base access le champ date_debut est en format date.sessions.Source = "SELECT * FROM t_sessions WHERE code_cour l'HEURE EST GRAVE [ par bakchlada ] salut c'est encore moi !! (j'entend d'ici les commentaires genre : "oh NON pas celui la ,pfff......") mon probleme cette fois ci concerne la gestion d


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,749 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales