2010-03-30 7 views
0

J'ai une table qui comprend le nom du groupe d'étudiants, l'heure de la leçon, les noms de jour comme Schedule. J'utilise C# avec MySQL et je veux trouver quelle leçon est quand l'utilisateur appuie sur le bouton de la table.mySQL: utiliser BETWEEN dans une table?

Je peux le trouver en entrant la valeur exacte comme dans le tableau, par ex. 08h30 ou 10h25. Mais je veux faire en sorte que le temps système et en vérifiant que c'est entre 8h30 et 10h25 ou 10h25 et 12h30. Ensuite, je peux dire que c'est la première ou la deuxième leçon.

J'ai aussi la table comprend la colonne Table_Time a 5 enregistrement comme 08:20, 10:25, 12:20 ainsi de suite. ce que je pourrais utiliser comme:

select Lesson_Time 
from mydb.clock 
where Lesson_Time between (current time)-30 AND (current time)+30 

Ou puis-je utiliser entre l'opérateur entre deux colonnes (comme la création d'Lesson_Time_Start et Lesson_Time_End) et en comparant le temps actuel comme Lesson_Start_Time < current time < Lesson_End_Time?

EDIT: Plus précisément, problème est comment puis-je vérifier l'heure courante qui enregistrent

J'ai table comme

Time_ID | Lesson_Time 
    1  08:30 
    2  10:25 
    3  12:20 
    4  14:15 
    5  16:10 

Et quand j'appuie sur une touche, je veux vérifier que le courant temps quand j'ai appuyé sur le bouton est-il égal à Time_ID Forexample J'ai appuyé sur le bouton à 09:15 et il doit sélectionner 1 th record , if I pressed button at 12:00 it must select 2 ème enregistrement.

Répondre

1

Je voudrais essayer quelque chose comme ça.

select 
    Time_ID, 
    Lesson_Time 
from 
    mydb.clock 
where 
    Lesson_Time <= TIME(NOW()) 
order by 
    Lesson_Time DESC 
limit 0, 1 

La requête est limitée aux dossiers de temps de leçon avant l'heure actuelle classement descendant par le temps et ne retourne que le premier enregistrement, qui devrait être l'enregistrement que vous voulez. (Note, cependant, que minuit peut compliquer les choses.)

+0

Cela fonctionne)) Merci. – Ercan

+0

Mais cela ne fonctionne pas sur C#. Y a-t-il une autre implémentation pour C#? – Ercan

+0

@Meko comment cela ne fonctionnerait-il pas avec C#? Vous envoyez la requête à mySQL, n'est-ce pas? –

1

Je ne suis pas tout à fait sûr de ce que vous voulez faire, mais je pense que vous cherchez DATE_ADD and DATE_SUB:

SELECT Lesson_Time from mydb.clock 
WHERE Lesson_Time between DATE_SUB(NOW(), INTERVAL 30 MINUTE) AND 
          DATE_ADD(NOW(), INTERVAL 30 MINUTE); 

fourni Lesson_Time est un champ DATETIME approprié, cela devrait fonctionner.

+0

Merci pour la réponse rapide.J'aime bien comme votre solution avant mais ici problème si le temps est 08h50 et il sera -30 min 08h20 mais dans ma table premier enregistrement à partir de 08:30 – Ercan

+0

Vous pouvez aussi dire "MAINTENANT() + INTERVALLE 30 MINUTE". –

+0

@Meko de sorte que vous voulez attraper l'intervalle de 30 minutes suivant? C'est différent. Je ne saurais pas une solution élégante dans mySQL dor cela. Pouvez-vous mettre à jour votre question en conséquence? –