Bonjour,
j'ai une table avec un champ date au format datetime (aaaa-mm-jj hh:mm:ss)
et j'aimerais faire une requete du genre:
sort moi tous les enregistrements du lundi au vendredi de 9h à 12h30
vous faites ça comment?
merci pour votre aide.
Bonjour,
j'ai une table avec un champ date au format datetime (aaaa-mm-jj hh:mm:ss)
et j'aimerais faire une requete du genre:
sort moi tous les enregistrements du lundi au vendredi de 9h à 12h30
vous faites ça comment?
merci pour votre aide.
bonjour
essaye ça, je me suis inspiré de l'assistant d'access et ça marche pour ma table date(N°, id, date):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT date.N°, date.date FROM [date] WHERE (((date.date)<=#12/12/2007 10:23#) AND ((date.date)>=#2/01/2003 13:22#));
Bonjour,
Juste une petite demande de précision : ce sont tous les enregistrements de 9h à 12h30 pour chaque jour de ta table qui est un lundi, un mardi, un mercredi, un jeudi ou un vendredi que tu veux ?
Où alors ce sont les enregistrement entre le lundi 9h et le vendredi 12h30 ?
Et ça vaut pour toutes les semaines dans la table ?
Parce selon la façon dont on comprend ta demande, ça change passablement les conditions dans la requête
ced
J'ai une fonction PHP qui s'appuie sur un test SQL sur lequel tu pourras t'inspirer.
Petite description de ce que fait la fonction avant de présenter le code SQL :
function bdd_is_between_times ($arg_begintime,$arg_endtime)
$arg_begintime: Time début (format hh:mm:ss),
$arg_endtime: Time Fin
Cette fonction indique si l'on se trouve actuellement entre 2 heures :
Elle tient compte de l'ordre des paramètres.
Si la première heure est supérieure à la deuxième, la fonction en deduit que la deuxieme heure se situe sur le jour suivant.
précision à la seconde
retourne TRUE si on est dans la période
sinon FALSE
Pour plus de lisibilité dans le code suivant, on peut remplacer ".$arg_begintime." par 22:00:00
et ".$arg_endtime." par 01:00:00 par exemple:
Dans ton cas, c'est la dernière partie qui te sera utile.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 SELECT CONCAT(DATE(NOW()),' ".$arg_begintime."') INTO @begin_period; SELECT CONCAT(DATE(NOW()),' ".$arg_endtime."') INTO @end_period; SELECT IF ( (SELECT (TIMESTAMPDIFF(SECOND,@begin_period,@end_period)<0)), DATE_ADD(@end_period, INTERVAL + 1 DAY), @end_period ) INTO @end_period; SELECT ( (TIMESTAMPDIFF(SECOND,@begin_period,NOW())>=0) AND (TIMESTAMPDIFF(SECOND,@end_period,NOW())<=0) );
Remplace NOW() par le champs Datetime a tester et c bon.
Est ce que ça répond a tes besoins ?
merci pour vos reponses, j'ai fais avec DATE_FORMAT:
DATE_FORMAT( date_end, '%w' ) NOT IN ( 0, 6 )
DATE_FORMAT( date_end, '%T' ) BETWEEN '09:00:00' AND '12:30:00'
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager