Je cherche un moyen de sélectionner la ligne dans laquelle l'heure actuelle est entre deux valeurs définies dans la ligne. J'ai mis en place une table avec 3 colonnes, 2 d'entre eux tiennent une horodatage (HH: MM: SS), l'autre une chaîne. Y a-t-il une manière que je puisse obtenir la chaîne correspondant à l'heure actuelle? Pour le mettre de manière plus abstraite: p>
Sélectionnez la chaîne du nom de table où (heure actuelle) entre (valeur d'heure limite inférieure) et (valeur temporelle supérieure); P>
p>
Donc, fondamentalement, basé sur l'heure actuelle, mon script devrait émettre la chaîne correcte. P>
Comment puis-je aller à ce sujet? Merci! P>
4 Réponses :
La façon dont vous avez fait est à peu près:
SELECT String FROM TableName WHERE CURTIME() BETWEEN (Lower Limit Time Value) AND (Upper Limit Time Value);
Les crochets sont-ils également corrects dans MySQL? Je ne connais pas la syntaxe et j'utilise actuellement quelque chose code> (citations normales 'ne semble pas fonctionner) dans mes requêtes via PHP.
Non. Les backtsticks (`) sont corrects pour délimiter les noms de colonne non standard. c'est à dire.
dans s'ils sont mysql code>, l'horodatage est un mot tout à fait déroutant.
inférieurlimit code> et
Upprimimit code> sont
Time Code> Colonnes de
00:00:00 Code> à
23:59:59 CODE>: P>
SELECT String
FROM TableName
WHERE CURTIME() BETWEEN lowerlimit AND upperlimit
OR CURTIME() BETWEEN SUBTIME(upperlimit, '24:00:00') AND lowerlimit
OR SUBTIME(CURTIME(), '24:00:00') BETWEEN SUBTIME(upperlimit, '24:00:00') AND lowerlimit
Fait la même erreur au début. Maintenant () Contient également la date de la date. Curtime () devrait être utilisé. Downvote pas de moi.
?? Je ne sais pas ce que vous demandez. Quoi qu'il en soit, votre réponse correspond à la question beaucoup mieux que d'autres.
Merci, il semble fonctionner lorsque je suppose que je suppose le ou la partie, si je ne le laissez pas tout après que le "lowerlimit" est retourné. De plus, je n'ai pas de transitions de minuit de la limite «inférieure» à la «majuscule». :] Vous devriez savoir que je sais que je connais très peu à MySQL, voudriez-vous expliquer la dernière partie?
@Chris: entre code> est dirigé, donc
2 entre 3 et 1 code> est
true code> mais
2 entre 3 et 1 code> est
faux code>. Dans
mysql code>, le temps peut être négatif, donc si vous avez une transition de minuit (à partir de
22:00 code> à
01:00 code>) il le convertira en
entre '-02: 00' et '01: 00 ' code>
SELECT string_col FROM your_table WHERE CURTIME() BETWEEN lower_limit_col AND upper_limit_col
Le type des deux colonnes doit être temporel (et non horodatage). Ensuite, la réponse est dans votre question:
select string from tablename where curtime() between lowerlimit and upperlimit
Ah, je n'ai pas ces transitions heureusement, merci pour la tête de la tête!
Quel type est le
inférieur_limit code> et
upper_limit code>?
Votre nuit s'étend-elle sur deux jours?
entre '22: 00: 00 'et '05: 00: 00' code> ne retournerait probablement pas ce que vous attendez.