你在做什麼應該工作的罰款。我一直在工作中從這樣的日期字段中選擇。
mysql> create table contracts (indate date);
Query OK, 0 rows affected (0.02 sec)
mysql> insert into contracts values ('2012-10-06'), ('2012-11-04'), ('2012-09-17');
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> set @from_date = '2012-10-01';
Query OK, 0 rows affected (0.00 sec)
mysql> set @to_date = '2012-10-31';
Query OK, 0 rows affected (0.00 sec)
mysql> select * from contracts where indate >= @from_date and indate <= @to_date;
+------------+
| indate |
+------------+
| 2012-10-06 |
+------------+
1 row in set (0.00 sec)
我當然在這裏使用了mysql變量,但是對他們沒有任何幫助;他們只包含字符串。你可以這樣做,而不是:
mysql> select * from contracts where indate >= '2012-10-01' and indate <= '2012-10-31';
+------------+
| indate |
+------------+
| 2012-10-06 |
+------------+
1 row in set (0.00 sec)
的O.P.是正確的,雖然,之間更簡潔:
mysql> select * from contracts where indate between '2012-10-01' and '2012-10-31';
+------------+
| indate |
+------------+
| 2012-10-06 |
+------------+
1 row in set (0.00 sec)
日期比較神奇的是,因爲該領域是日期類型。
看看BETWEEN()函數 – 2012-10-07 03:57:04
當你說* MySQL的 「這是行不通的,」 *是什麼意思?你有錯誤嗎?如果是這樣,在PHP端或MySQL端?還是它沒有返回你期望的行?還是它根本沒有返回任何行?那麼'indate'的數據類型是什麼?請更具體一些。 – NullUserException
你能顯示實際的PHP代碼嗎?我沒有看到你的SQL有什麼問題 - 它應該返回你指定的日期。您是否嘗試過直接通過MySQL客戶端而不是PHP來運行此SQL?如果錯誤來自PHP或MySQL,那麼這是縮小範圍的好方法。正如NullUserException所說,錯誤是什麼? –