您的查詢完好。它應該按預期工作:
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)
你確定你的timein
和timeout
字段datetime
類型或timestamp
的?
UPDATE:繼@Psytronic's建議下面的評論,你的例子甚至會工作,如果你的領域是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)
但是你的領域不應該是varchar
,如上述將進行字符串比較而不是時間比較。
你確定'timein'和'timeout'都是'DATETIME'字段嗎? – Anax 2010-07-19 06:59:01
顯示'DESCRIBE考勤'的輸出# – Anax 2010-07-19 07:05:38
我已經檢查過的字段的類型,它被設置爲日期時間類型 – Bryan 2010-07-19 08:15:14