Votre requête est correcte. Il devrait fonctionner comme prévu:
CREATE TABLE attendance (id int, timein datetime, timeout datetime);
INSERT INTO attendance VALUES (1, '2010-07-13 23:44:11', '2010-07-14 08:01:14');
INSERT INTO attendance VALUES (2, '2010-07-12 23:40:56', '2010-07-13 08:00:52');
INSERT INTO attendance VALUES (3, '2010-07-10 05:49:32',' 2010-07-10 14:00:45');
SELECT * FROM attendance where '2010-07-13 00:06:00' BETWEEN timein AND timeout;
+------+---------------------+---------------------+
| id | timein | timeout |
+------+---------------------+---------------------+
| 2 | 2010-07-12 23:40:56 | 2010-07-13 08:00:52 |
+------+---------------------+---------------------+
1 row in set (0.01 sec)
Etes-vous sûr que vos timein
et timeout
champs sont de type datetime
ou timestamp
?
MISE À JOUR: Suite à @Psytronic's suggestion les commentaires ci-dessous, votre exemple serait même travailler si vos champs étaient de type varchar
:
CREATE TABLE attendance (id int, timein varchar(100), timeout varchar(100));
INSERT INTO attendance VALUES (1, '2010-07-13 23:44:11', '2010-07-14 08:01:14');
INSERT INTO attendance VALUES (2, '2010-07-12 23:40:56', '2010-07-13 08:00:52');
INSERT INTO attendance VALUES (3, '2010-07-10 05:49:32',' 2010-07-10 14:00:45');
SELECT * FROM attendance where '2010-07-13 00:06:00' BETWEEN timein AND timeout;
+------+---------------------+---------------------+
| id | timein | timeout |
+------+---------------------+---------------------+
| 2 | 2010-07-12 23:40:56 | 2010-07-13 08:00:52 |
+------+---------------------+---------------------+
1 row in set (0.00 sec)
Cependant vos champs ne doivent pas être varchar
, comme ci-dessus ferait une comparaison de chaîne au lieu d'une comparaison de temps.
Êtes-vous sûr que 'timein' et' timeout' sont les deux champs 'DATETIME'? – Anax
Afficher la sortie de 'DÉCRIVE présence' – Anax
J'ai vérifié les types de champs et il est défini comme type de date-heure – Bryan