2012-12-17 4 views
0

Je stocke l'heure dans la table de présence dans ce format (00:00:00) .. Maintenant, je dois trouver les données de connexion stockées avant 09:00:00. J'utilise cette requête pour trouver les données.Récupérer des données stockées entre les heures

SELECT user_name, 
     time_in 
    FROM attendance 
WHERE user_name='Vignesh' 
    AND time_in < 09:20:59 

Cette chose ne fonctionne pas pour moi. Y at-il une autre méthode pour obtenir les données avant 09:00:00 de la DB?

+1

Quel type colonne est-il? – zerkms

+0

L'heure est-elle un varchar? –

+0

type: temps défaut: 00:00:00 –

Répondre

6

Vous devez placer entre guillemets:

AND time_in < '09:20:59' 
       ^--------^--- single quote char 

http://dev.mysql.com/doc/refman/5.5/en/date-and-time-literals.html

MySQL reconnaît TIME valeurs dans les formats suivants:

  • En tant que chaîne au format 'D HH:MM:SS'. Vous pouvez également utiliser l'une des syntaxes «relaxes» suivantes: 'HH:MM:SS', 'HH:MM', 'D HH:MM', 'D HH' ou 'SS'. Ici D représente jours et peut avoir une valeur de 0 à 34.

  • Comme une chaîne sans délimiteurs au format 'HHMMSS', à condition que cela ait du sens en tant que temps. Par exemple, '101112' est compris comme '10:11:12', mais '109712' est illégal (il a une partie minute absurde) et devient '00:00:00'.

  • En tant que numéro au format HHMMSS, à condition que cela ait du sens en tant que temps. Par exemple, 101112 est compris comme '10:11:12'. Les formats alternatifs suivants sont également compris: SS, MMSS ou HHMMSS.

+0

+1 Hey grand homme. C'est cool! Je vous remercie pour votre réponse aimable. –

+0

Une fois que je récupère les enregistrements Existe-t-il une autre méthode pour valider ces dates en PHP?J'ai une idée pour colorer les données avant 9 heures pour une référence facile. –

+0

@Vignesh Gopalakrishnan: dès qu'il s'agit d'une chaîne au format ''HH: MM: SS'' vous pouvez simplement effectuer une comparaison directe comme' if ($ time <'09: 00: 00 ') {...} ' – zerkms

1

Vous avez utiliser la syntaxe suivante pour obtenir des données entre deux dates,

date entre '2011/02/25' et '' 27/02/2011

Utilisation datetime pour celui ci-dessus .. il fonctionnera .... (horodatage)

Ou utiliser comme ci-dessous,

SELECT id FROM Parts WHERE (Time < EndTime) AND (Time > BeginTime) ORDER BY Time; 
+0

Je demande les données par rapport au temps. Pas de date. Merci pour votre réponse –

+0

Consultez mon code édité .... –

+0

Thankyou Vinoth Babu! –

2

essayer faire

SELECT user_name, 
    time_in 
    FROM attendance 
WHERE user_name='Vignesh' 
    AND time_in < '09:20:59' 

EDIT:

ou vous pouvez également utiliser cette

 SELECT user_name,time_in 
    FROM attendance 
    WHERE user_name='Vignesh' 
    AND startTime < TIME_FORMAT("00:00:00","%H:%i:%s") 
    AND endTime > TIME_FORMAT("05:00:00","%H:%i:%s") 
+0

voir ma vérification si elle ne vous résoud pas la première requête –

+0

time_in ENTRE '09: 20: 59 'AND '09: 00: 00' Cela ne fonctionne pas. –

+1

regardez ma deuxième réponse mise à jour, j'espère que cela vous aide –

Questions connexes