鑑於此示例代碼,根據您的例子,它的工作原理與我的期望(使用MySQL版本5.0.51b-community-nt
,但這是不太可能的事情):
DROP TABLE IF EXISTS `test`.`list`;
CREATE TABLE `test`.`list` (
`id` int(10) unsigned NOT NULL auto_increment,
`inserted_on` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO list VALUES(null, '2013-12-04 17:50:34');
INSERT INTO list VALUES(null, '2013-12-23 17:50:34');
後來,當我執行查詢:
SELECT * FROM list WHERE inserted_on <= DATE_SUB(CURDATE(), INTERVAL 0 DAY);
或:
SELECT * FROM list WHERE inserted_on <= CURDATE();
甚至,例如:
SELECT * FROM list WHERE inserted_on <= DATE_SUB(CURDATE(), INTERVAL 1 DAY);
結果是:
| id | inserted_on |
+----+---------------------+
| 1 | 2013-12-04 17:50:34 |
...如預期。
所以,你的代碼中一定還有其他東西在發生,我們並不知道。例如:
- 您是否肯定該行實際存在?
- 你使用什麼數據類型爲列
inserted_on
(即使文本列也應該正常工作)
- 你使用的是什麼版本的MySQL?
- 等
進一步的問題:
- 當你確切的
mysqli_query(...)
後做了var_dump($a);
立即撥打你有什麼是$a
價值?是false
?
- 什麼是當你不使用PHP的結果集,但一些MySQL管理工具來直接查詢數據庫?那麼是否給出預期的結果集?
你使用的是date_sub,然後減去任何東西? –
'2013:12:23'不是有效的日期時間值。它應該是'yyyy-mm-dd hh:mm:ss'(注意日期中的破折號)。如果你沒有比較本地mysql日期/時間值,那麼你正在進行STRING比較,所有投注都關閉。 –
@John Conde ...我忘了它那裏...我曾經使用另一種語法..但後來我修改它,我離開那個DATE_SUB那裏是錯誤的... – SpiderLinked